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.

145 lines
5.6 KiB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Web.Mvc;
  7. using Sevomin.Models;
  8. using Sevomin.Models.Repositories;
  9. using Microsoft.AspNet.Identity;
  10. using Microsoft.AspNet.Identity.EntityFramework;
  11. using Sevomin.Models.Helpers;
  12. using System.Web;
  13. namespace Sevomin.WebFrontend.Controllers
  14. {
  15. public class JobController : AuthorizedController
  16. {
  17. IJobRepository _JobRepository;
  18. public SevominUserManager UserManager { get; private set; }
  19. private HttpContextBase _httpContext;
  20. public JobController()
  21. : this(JobRepository.Current,
  22. new SevominUserManager(new UserStore<User>(SevominDbContext.Current)), null)
  23. {
  24. }
  25. protected override void Initialize(System.Web.Routing.RequestContext requestContext)
  26. {
  27. base.Initialize(requestContext);
  28. _httpContext = requestContext.HttpContext;
  29. }
  30. public JobController(IJobRepository jobRepository, SevominUserManager userManager, HttpContextBase httpContext)
  31. {
  32. _JobRepository = jobRepository;
  33. UserManager = userManager;
  34. _httpContext = httpContext;
  35. }
  36. private async Task<Job> GetEmptyJob()
  37. {
  38. User u = await UserManager.FindByNameAsync(User.Identity.Name);
  39. if (u == null)
  40. throw new InvalidOperationException("شما خیلی هنرمندی! به ما هم بگو چجوری!");
  41. Avalin avalin = u as Avalin;
  42. if (avalin == null)
  43. throw new InvalidOperationException("جای شما که اینجا نیست!");
  44. Job job = _JobRepository.GetEmptyJobFor(avalin);
  45. return job;
  46. }
  47. public async Task<ActionResult> NewJob()
  48. {
  49. Job job = await GetEmptyJob();
  50. JobViewModel jvm = new JobViewModel(job);
  51. return View(jvm);
  52. }
  53. [HttpPost]
  54. public async Task<ActionResult> NewJob(string JalaliExpireDate, string ContactPersonName,
  55. string ContactPersonPhone, string ContactPersonEMail, bool IsFullTime,
  56. bool ShowCompanyName, string Description, bool ShowCompanyLogo, FormCollection form)
  57. {
  58. Job job = await GetEmptyJob();
  59. try
  60. {
  61. UpdateFields(JalaliExpireDate, ContactPersonName, ContactPersonPhone,
  62. ContactPersonEMail, IsFullTime, ShowCompanyName,
  63. Description, ShowCompanyLogo, form, job);
  64. JobRepository.Current.Save();
  65. }
  66. catch (Exception)
  67. {
  68. JobViewModel jvm = new JobViewModel(job);
  69. return View(jvm);
  70. }
  71. return Content("boogh: " + job.Id.ToString());
  72. }
  73. private async Task<Job> FetchJob(long id)
  74. {
  75. User u = await UserManager.FindByNameAsync(User.Identity.Name);
  76. if (u == null)
  77. throw new InvalidOperationException("شما خیلی هنرمندی! به ما هم بگو چجوری!");
  78. Avalin avalin = (Avalin)u;
  79. Job job = _JobRepository.Find(id);
  80. if (job == null || job.AvalinId != avalin.Id)
  81. throw new InvalidOperationException("شماره آگهی استخدام مورد نظر معتبر نیست");
  82. return job;
  83. }
  84. public async Task<ActionResult> Edit(long id)
  85. {
  86. Job job = await FetchJob(id);
  87. JobViewModel jvm = new JobViewModel(job);
  88. return View(jvm);
  89. }
  90. [HttpPost]
  91. public async Task<ActionResult> Edit(long id, string JalaliExpireDate, string ContactPersonName,
  92. string ContactPersonPhone, string ContactPersonEMail, bool IsFullTime,
  93. bool ShowCompanyName, string Description, bool ShowCompanyLogo, FormCollection form)
  94. {
  95. Job job = await FetchJob(id);
  96. try
  97. {
  98. UpdateFields(JalaliExpireDate, ContactPersonName, ContactPersonPhone,
  99. ContactPersonEMail, IsFullTime, ShowCompanyName,
  100. Description, ShowCompanyLogo, form, job);
  101. JobRepository.Current.Save();
  102. }
  103. catch (Exception)
  104. {
  105. JobViewModel jvm = new JobViewModel(job);
  106. return View(jvm);
  107. }
  108. return Content("boogh: " + job.Id.ToString());
  109. }
  110. private static void UpdateFields(string JalaliExpireDate, string ContactPersonName, string ContactPersonPhone, string ContactPersonEMail, bool IsFullTime, bool ShowCompanyName, string Description, bool ShowCompanyLogo, FormCollection form, Job job)
  111. {
  112. job.ExpireDate = DateAssist.ToMiladi(JalaliExpireDate);
  113. job.ContactPersonEMail = ContactPersonEMail;
  114. job.ContactPersonName = ContactPersonName;
  115. job.ContactPersonPhone = ContactPersonPhone;
  116. job.Description = Description;
  117. job.IsFullTime = IsFullTime;
  118. job.ShowCompanyLogo = ShowCompanyLogo;
  119. job.ShowCompanyName = ShowCompanyName;
  120. foreach (var jp in job.JobParameters)
  121. {
  122. string value = form[string.Format("value-{0}", jp.Parameter.Id)];
  123. byte moscow = 0;
  124. byte.TryParse(form[string.Format("moscow-{0}", jp.Parameter.Id)], out moscow);
  125. jp.SetValue(value);
  126. if (string.IsNullOrWhiteSpace(jp.StringValue))
  127. jp.Moscow = 0;
  128. else
  129. jp.Moscow = moscow;
  130. }
  131. }
  132. }
  133. }