You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
14 KiB

10 years ago
  1. @{
  2. Layout = null;
  3. }
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  8. <title>Sevomin God Mode</title>
  9. <link rel="stylesheet" type="text/css" href="@Url.Content("~/content/bootstrap.min.css")" />
  10. <link rel="stylesheet" type="text/css" href="@Url.Content("~/content/bootstrap-theme.min.css")" />
  11. <link rel="stylesheet" type="text/css" href="@Url.Content("~/content/common.css")" />
  12. <link rel="stylesheet" type="text/css" href="@Url.Content("~/content/forms.css")" />
  13. </head>
  14. <body>
  15. <div class="container rtl">
  16. <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
  17. <div class="container">
  18. <div class="navbar-header">
  19. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#collapse">
  20. <span class="sr-only">Toggle navigation</span>
  21. <span class="icon-bar"></span>
  22. <span class="icon-bar"></span>
  23. <span class="icon-bar"></span>
  24. </button>
  25. <a class="navbar-brand" href="#">
  26. <small>(آزمایشی)</small>
  27. <img src="/content/images/revert-logo.png" />
  28. </a>
  29. </div>
  30. <div class="collapse navbar-collapse navbar-right" id="collapse">
  31. <ul class="nav navbar-nav navbar-right">
  32. <li class="rtl"><a href="/"><span class="glyphicon glyphicon-home"></span> خانه</a></li>
  33. <li class="rtl"><a href="/errors.axd"><span class="glyphicon glyphicon-exclamation-sign"></span> خطاها</a></li>
  34. <li class="rtl"><a href="@Url.Action("RecentJobs", "Job")">آگهی‌های استخدام</a></li>
  35. <li class="dropdown rtl">
  36. <a href="#" class="dropdown-toggle" data-toggle="dropdown">پروفایل <b class="caret"></b></a>
  37. <ul class="dropdown-menu">
  38. <li class="rtl"><a href="@Url.Action("ChangePassword", "Account")"><span class="glyphicon glyphicon-refresh"></span> تغییر کلمه عبور</a></li>
  39. </ul>
  40. </li>
  41. <li class="rtl"><a href="/logout">خروج از سایت</a></li>
  42. </ul>
  43. </div>
  44. </div>
  45. </nav>
  46. <div class="jumbotron">
  47. <h1>سلام!</h1>
  48. <p>یک سری اطلاعات کلی درباره وب سایت سومین در این محل قابل ارائه می باشد.</p>
  49. <p>تاریخ و ساعت به وقت سرور سومین: @DateTime.Now.ToShortDateString() - @DateTime.Now.ToShortTimeString()</p>
  50. </div>
  51. <div class="row">
  52. <div class="col-md-12">
  53. <p>برای تست: @(HttpContext.Current.Application["ApplicationStart"] == null ? "اجرا نشده" : (DateTime.Now - (DateTime)HttpContext.Current.Application["ApplicationStart"]).Minutes.ToString())</p>
  54. <div class="table-responsive">
  55. <table class="table table-stripped table-bordered">
  56. <thead>
  57. <tr>
  58. <th>تعداد کل اعضا</th>
  59. <th>تعداد کارفرماها</th>
  60. <th>تعداد متخصصین</th>
  61. <th>تعداد فرصت های شغلی</th>
  62. <th>تعداد اعلام آمادگی های فرصت های شغلی</th>
  63. </tr>
  64. </thead>
  65. <tbody>
  66. <tr>
  67. <td>@Sevomin.Models.SevominDbContext.Current.Users.Count() (دو روز اخیر: @Sevomin.Models.SevominDbContext.Current.Users.ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count())</td>
  68. <td>@(Sevomin.Models.SevominDbContext.Current.Users.OfType<Sevomin.Models.Avalin>().Count()) (دو روز اخیر: @(Sevomin.Models.SevominDbContext.Current.Users.OfType<Sevomin.Models.Avalin>().ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count()))</td>
  69. <td>@(Sevomin.Models.SevominDbContext.Current.Users.OfType<Sevomin.Models.Dovomin>().Count()) (دو روز اخیر: @(Sevomin.Models.SevominDbContext.Current.Users.OfType<Sevomin.Models.Dovomin>().ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count()))</td>
  70. <td>@Sevomin.Models.SevominDbContext.Current.Jobs.Count()</td>
  71. <td>@Sevomin.Models.SevominDbContext.Current.DovominJobs.Count() (دو روز اخیر: @Sevomin.Models.SevominDbContext.Current.DovominJobs.ToList().Where(j => j.ApplyDate.Date > DateTime.Now.Date.AddDays(-2)).Count())</td>
  72. </tr>
  73. </tbody>
  74. </table>
  75. </div>
  76. </div>
  77. </div>
  78. <div class="row">
  79. <div class="col-md-12 rtl">
  80. <div class="panel panel-default" id="parameters-edit-panel">
  81. <div class="panel-heading">
  82. <h4 class="panel-title"><a data-toggle="collapse" data-parent="parameters-edit-panel" href="#parameters-edit-panel-body">ویرایش متن راهنمای پارامترها</a></h4>
  83. </div>
  84. <div id="parameters-edit-panel-body" class="panel-collapse collapse in">
  85. <div class="panel-body">
  86. @foreach (var param in Sevomin.Models.SevominDbContext.Current.Parameters)
  87. {
  88. <div class="col-md-6 col-sm-12 col-xs-12">
  89. <table class="table table-stripped table-bordered">
  90. <thead>
  91. <tr>
  92. <th>پارامتر</th>
  93. <th>توضیح اولین</th>
  94. <th>توضیح دومین</th>
  95. </tr>
  96. </thead>
  97. <tbody>
  98. <tr>
  99. <td>@param.Name</td>
  100. <td>
  101. <div style="border: 1px solid #dcdcdc" data-param-id="@param.Id" data-id="CommentAvalin" contenteditable>@param.CommentAvalin</div>
  102. </td>
  103. <td>
  104. <div style="border: 1px solid #dcdcdc" data-param-id="@param.Id" data-id="CommentDovomin" contenteditable>@param.CommentDovomin</div>
  105. </td>
  106. <td>
  107. <button data-param-id="@param.Id" class="btn btn-xs btn-primary pull-left parameter-updater"><span class="glyphicon glyphicon-refresh"></span></button>
  108. </td>
  109. </tr>
  110. </tbody>
  111. </table>
  112. </div>
  113. }
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <div class="row">
  120. <div class="col-md-12 rtl">
  121. <h2>اعلام آمادگی های فرصت های شغلی</h2>
  122. <div class="panel-group" id="accordion">
  123. @foreach (Sevomin.Models.Avalin avalin in Sevomin.Models.SevominDbContext.Current.Users.OfType<Sevomin.Models.Avalin>().ToList()
  124. .Where(a => a.Jobs != null && a.Jobs.Any(j => j.ExpireDate.Date >= DateTime.Now.Date))
  125. .OrderByDescending(a => a.Jobs.OrderByDescending(j => j.CreateDate).First().CreateDate)
  126. .ToList())
  127. {
  128. if (avalin.Jobs.Count == 0)
  129. { continue; }
  130. <div class="panel panel-default">
  131. <div class="panel-heading">
  132. <h4 class="panel-title">
  133. <a data-toggle="collapse" data-parent="#accordion" href="#@avalin.Id">
  134. @avalin.DisplayName
  135. </a>
  136. </h4>
  137. </div>
  138. @foreach (var job in avalin.Jobs.OrderByDescending(a => a.CreateDate))
  139. {
  140. if (job.Applications.Count == 0)
  141. { continue; }
  142. <div id="@avalin.Id" class="panel-collapse collapse in">
  143. <div class="panel-body">
  144. <p>@((new Sevomin.Models.JobMiniViewModel(job)).JobSummary) @Html.ActionLink("مشاهده آگهی", "SingleJob", "Job", new { jobId = job.Id }, null)</p>
  145. <h5>
  146. اطلاعات فرد پاسخگو به این آگهی: (@(string.IsNullOrWhiteSpace(job.ContactPersonName) ? "نام وارد نشده" : job.ContactPersonName)
  147. @((string.IsNullOrWhiteSpace(job.ContactPersonEMail) ? "ایمیل وارد نشده" : job.ContactPersonEMail))
  148. @((string.IsNullOrWhiteSpace(job.ContactPersonPhone) ? "تلفن وارد نشده" : job.ContactPersonPhone)))
  149. </h5>
  150. </div>
  151. @foreach (var application in job.Applications.OrderByDescending(a => a.ApplyDate))
  152. {
  153. Sevomin.Models.JobApplicationViewModel apply = new Sevomin.Models.JobApplicationViewModel(application);
  154. <div class="panel-body">
  155. <em>از طرف <a href="@Url.Action("Dovomin", "Account", new { userId = apply.DovominId })">@apply.DovominDisplayName</a></em>
  156. @if (!string.IsNullOrWhiteSpace(apply.CoverLetter))
  157. {
  158. <h5>پیغام متخصص:</h5>
  159. <blockquote>@apply.CoverLetter</blockquote>
  160. }
  161. @if (apply.MinimumRequirement)
  162. {
  163. <p>این متخصص تمامی مهارت های الزامی برای این فرصت شغلی را دارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.</p>
  164. }
  165. else
  166. {
  167. <p>این متخصص برخی مهارت های الزامی برای این فرصت شغلی را ندارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.</p>
  168. }
  169. </div>
  170. }
  171. </div>
  172. }
  173. </div>
  174. }
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <script src="@Url.Content("~/scripts/jquery-2.1.0.min.js")"></script>
  180. <script src="@Url.Content("~/scripts/jquery-ui-1.10.4.js")"></script>
  181. <script src="@Url.Content("~/scripts/jalaliCalendar.js")"></script>
  182. <script src="@Url.Content("~/scripts/jquery-ui-i18n.min.js")"></script>
  183. <script src="@Url.Content("~/scripts/jquery.validate.min.js")"></script>
  184. <script src="@Url.Content("~/scripts/jquery.validate.unobtrusive.min.js")"></script>
  185. <script src="@Url.Content("~/scripts/bootstrap.min.js")"></script>
  186. <script>
  187. $(function () {
  188. $('.collapse').collapse();
  189. $('button.parameter-updater').bind('click', function (e) {
  190. e.preventDefault();
  191. var vals = $('div[data-param-id="' + $(this).data('param-id') + '"]');
  192. var commentAvalin; var commentDovomin; var paramId = $(this).data('param-id');
  193. $.each(vals, function (index, obj) {
  194. if ($(obj).data('id') == "CommentAvalin")
  195. commentAvalin = $(obj).text();
  196. else
  197. commentDovomin = $(obj).text();
  198. });
  199. $.post('@Url.Action("UpdateParam", "God")', { paramId: paramId, commentAvalin: commentAvalin, commentDovomin: commentDovomin })
  200. .success(function () {
  201. console.log('done');
  202. });
  203. });
  204. });
  205. </script>
  206. </body>
  207. </html>