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.

106 lines
2.7 KiB

10 years ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace Sevomin.Models.Repositories
  5. {
  6. public class JobRepository:IJobRepository
  7. {
  8. #region Singleton
  9. private static JobRepository member;
  10. private static object locker = new object();
  11. private JobRepository()
  12. {
  13. }
  14. static JobRepository()
  15. {
  16. lock (locker)
  17. {
  18. JobRepository.member = new JobRepository();
  19. }
  20. }
  21. public static JobRepository Current
  22. {
  23. get
  24. {
  25. return JobRepository.member;
  26. }
  27. }
  28. #endregion
  29. #region JobRepository
  30. public IQueryable<Job> ListAll()
  31. {
  32. return SevominDbContext.Current.Jobs;
  33. }
  34. public Job Find(long key)
  35. {
  36. return ListAll().SingleOrDefault(d => d.Id == key);
  37. }
  38. public void Delete(Job d)
  39. {
  40. SevominDbContext.Current.Jobs.Remove(d);
  41. Save();
  42. }
  43. public void Add(Job d)
  44. {
  45. SevominDbContext.Current.Jobs.Add(d);
  46. Save();
  47. }
  48. public void Save()
  49. {
  50. SevominDbContext.Current.SaveChanges();
  51. }
  52. public Job GetEmptyJobFor(Avalin avalin)
  53. {
  54. Job job = new Job();
  55. var parameters = ParameterRepository.Current.ListAll();
  56. job.JobParameters = new List<JobParameter>();
  57. foreach (var param in ParameterRepository.Current.ListAll())
  58. {
  59. JobParameter jp = new JobParameter(job, param);
  60. job.JobParameters.Add(jp);
  61. }
  62. job.IsFullTime = true;
  63. job.ShowCompanyLogo = false;
  64. job.ShowCompanyName = false;
  65. job.CreateDate = DateTime.UtcNow;
  66. job.Avalin = avalin;
  67. avalin.Jobs.Add(job);
  68. return job;
  69. }
  70. public DovominJob Apply(Dovomin dovomin, Job job, string coverLetter)
  71. {
  72. DovominJob dj = new DovominJob(dovomin, job);
  73. dj.ApplyDate = DateTime.UtcNow;
  74. dj.CoverLetter = coverLetter;
  75. if (dovomin.DovominJobs.Any(d => d.JobId == job.Id))
  76. {
  77. dovomin.DovominJobs.First(d => d.JobId == job.Id).CoverLetter = coverLetter;
  78. }
  79. else
  80. {
  81. dovomin.DovominJobs.Add(dj);
  82. }
  83. Save();
  84. return dj;
  85. }
  86. #endregion
  87. }
  88. }