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.

259 lines
16 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
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="ad-panel">
  81. <div class="panel-heading">
  82. <h4 class="panel-title"><a data-toggle="collapse" data-parent="ad-panel" href="#ad-panel-body">اضافه کردن آگهی در منوی کناری</a></h4>
  83. </div>
  84. <div id="ad-panel-body" class="panel-collapse collapse in">
  85. <div class="panel-body">
  86. <div class="row">
  87. <div class="col-md-8 pull-right">
  88. <label class="col-md-2 pull-right">
  89. عنوان
  90. </label>
  91. <input type="text" name="Title" placeholder="عنوان" class="col-md-10 pull-left" />
  92. </div>
  93. <div class="col-md-3 pull-left">
  94. <label class='col-md-6 pull-right'>
  95. مدت
  96. </label>
  97. <input type="number" name="Duration" placeholder="مدت" class="col-md-6 pull-left" />
  98. </div>
  99. </div>
  100. <div class="row">
  101. <div class="col-md-12">
  102. <label class="col-md-2 pull-right">متن</label>
  103. <input type="text" name="Description" placeholder="متن" class="col-md-8 col-md-offset-1 pull-left" />
  104. </div>
  105. </div>
  106. <div class="row">
  107. <div class="col-md-9 pull-right">
  108. <label class='col-md-2 pull-right'>لینک</label>
  109. <input type="text" name="Link" placeholder="لینک" class="col-md-10 pull-left" />
  110. </div>
  111. <div class="col-md-3">
  112. <button class="btn btn-default" type="submit" role="button">درج آگهی</button>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. <div class="row">
  121. <div class="col-md-12 rtl">
  122. <div class="panel panel-default" id="parameters-edit-panel">
  123. <div class="panel-heading">
  124. <h4 class="panel-title"><a data-toggle="collapse" data-parent="parameters-edit-panel" href="#parameters-edit-panel-body">ویرایش متن راهنمای پارامترها</a></h4>
  125. </div>
  126. <div id="parameters-edit-panel-body" class="panel-collapse collapse in">
  127. <div class="panel-body">
  128. @foreach (var param in Sevomin.Models.SevominDbContext.Current.Parameters)
  129. {
  130. <div class="col-md-6 col-sm-12 col-xs-12">
  131. <table class="table table-stripped table-bordered">
  132. <thead>
  133. <tr>
  134. <th>پارامتر</th>
  135. <th>توضیح اولین</th>
  136. <th>توضیح دومین</th>
  137. </tr>
  138. </thead>
  139. <tbody>
  140. <tr>
  141. <td>@param.Name</td>
  142. <td>
  143. <div style="border: 1px solid #dcdcdc" data-param-id="@param.Id" data-id="CommentAvalin" contenteditable>@param.CommentAvalin</div>
  144. </td>
  145. <td>
  146. <div style="border: 1px solid #dcdcdc" data-param-id="@param.Id" data-id="CommentDovomin" contenteditable>@param.CommentDovomin</div>
  147. </td>
  148. <td>
  149. <button data-param-id="@param.Id" class="btn btn-xs btn-primary pull-left parameter-updater"><span class="glyphicon glyphicon-refresh"></span></button>
  150. </td>
  151. </tr>
  152. </tbody>
  153. </table>
  154. </div>
  155. }
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. <div class="row">
  162. <div class="col-md-12 rtl">
  163. <h2>اعلام آمادگی های فرصت های شغلی</h2>
  164. <div class="panel-group" id="accordion">
  165. @foreach (Sevomin.Models.Avalin avalin in Sevomin.Models.SevominDbContext.Current.Users.OfType<Sevomin.Models.Avalin>().ToList()
  166. .Where(a => a.Jobs != null && a.Jobs.Any(j => j.ExpireDate.Date >= DateTime.Now.Date))
  167. .OrderByDescending(a => a.Jobs.OrderByDescending(j => j.CreateDate).First().CreateDate)
  168. .ToList())
  169. {
  170. if (avalin.Jobs.Count == 0)
  171. {
  172. continue;
  173. }
  174. <div class="panel panel-default">
  175. <div class="panel-heading">
  176. <h4 class="panel-title">
  177. <a data-toggle="collapse" data-parent="#accordion" href="#@avalin.Id">
  178. @avalin.DisplayName
  179. </a>
  180. </h4>
  181. </div>
  182. @foreach (var job in avalin.Jobs.OrderByDescending(a => a.CreateDate))
  183. {
  184. if (job.Applications.Count == 0)
  185. {
  186. continue;
  187. }
  188. <div id="@avalin.Id" class="panel-collapse collapse in">
  189. <div class="panel-body">
  190. <p>@((new Sevomin.Models.JobMiniViewModel(job)).JobSummary) @Html.ActionLink("مشاهده آگهی", "SingleJob", "Job", new {jobId = job.Id}, null)</p>
  191. <h5>
  192. اطلاعات فرد پاسخگو به این آگهی: (@(string.IsNullOrWhiteSpace(job.ContactPersonName) ? "نام وارد نشده" : job.ContactPersonName)
  193. @((string.IsNullOrWhiteSpace(job.ContactPersonEMail) ? "ایمیل وارد نشده" : job.ContactPersonEMail))
  194. @((string.IsNullOrWhiteSpace(job.ContactPersonPhone) ? "تلفن وارد نشده" : job.ContactPersonPhone)))
  195. </h5>
  196. </div>
  197. @foreach (var application in job.Applications.OrderByDescending(a => a.ApplyDate))
  198. {
  199. Sevomin.Models.JobApplicationViewModel apply = new Sevomin.Models.JobApplicationViewModel(application);
  200. <div class="panel-body">
  201. <em>از طرف <a href="@Url.Action("Dovomin", "Account", new {userId = apply.DovominId})">@apply.DovominDisplayName</a></em>
  202. @if (!string.IsNullOrWhiteSpace(apply.CoverLetter))
  203. {
  204. <h5>پیغام متخصص:</h5>
  205. <blockquote>@apply.CoverLetter</blockquote>
  206. }
  207. @if (apply.MinimumRequirement)
  208. {
  209. <p>این متخصص تمامی مهارت های الزامی برای این فرصت شغلی را دارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.</p>
  210. }
  211. else
  212. {
  213. <p>این متخصص برخی مهارت های الزامی برای این فرصت شغلی را ندارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.</p>
  214. }
  215. </div>
  216. }
  217. </div>
  218. }
  219. </div>
  220. }
  221. </div>
  222. </div>
  223. </div>
  224. @Html.Action("AdManagementPanel")
  225. </div>
  226. <script src="@Url.Content("~/scripts/jquery-2.1.0.min.js")"></script>
  227. <script src="@Url.Content("~/scripts/jquery-ui-1.10.4.js")"></script>
  228. <script src="@Url.Content("~/scripts/jalaliCalendar.js")"></script>
  229. <script src="@Url.Content("~/scripts/jquery-ui-i18n.min.js")"></script>
  230. <script src="@Url.Content("~/scripts/jquery.validate.min.js")"></script>
  231. <script src="@Url.Content("~/scripts/jquery.validate.unobtrusive.min.js")"></script>
  232. <script src="@Url.Content("~/scripts/bootstrap.min.js")"></script>
  233. <script>
  234. $(function () {
  235. $('.collapse').collapse();
  236. $('button.parameter-updater').bind('click', function (e) {
  237. e.preventDefault();
  238. var vals = $('div[data-param-id="' + $(this).data('param-id') + '"]');
  239. var commentAvalin;
  240. var commentDovomin;
  241. var paramId = $(this).data('param-id');
  242. $.each(vals, function (index, obj) {
  243. if ($(obj).data('id') == "CommentAvalin")
  244. commentAvalin = $(obj).text();
  245. else
  246. commentDovomin = $(obj).text();
  247. });
  248. $.post('@Url.Action("UpdateParam", "God")', { paramId: paramId, commentAvalin: commentAvalin, commentDovomin: commentDovomin })
  249. .success(function () {
  250. console.log('done');
  251. });
  252. });
  253. });
  254. </script>
  255. </body>
  256. </html>