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.

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