using System; using System.Collections.Generic; using System.Linq; namespace Sevomin.Models.Repositories { public class JobRepository:IJobRepository { #region Singleton private static JobRepository member; private static object locker = new object(); private JobRepository() { } static JobRepository() { lock (locker) { JobRepository.member = new JobRepository(); } } public static JobRepository Current { get { return JobRepository.member; } } #endregion #region JobRepository public IQueryable ListAll() { return SevominDbContext.Current.Jobs; } public Job Find(long key) { return ListAll().SingleOrDefault(d => d.Id == key); } public void Delete(Job d) { SevominDbContext.Current.Jobs.Remove(d); Save(); } public void Add(Job d) { SevominDbContext.Current.Jobs.Add(d); Save(); } public void Save() { SevominDbContext.Current.SaveChanges(); } public Job GetEmptyJobFor(Avalin avalin) { Job job = new Job(); var parameters = ParameterRepository.Current.ListAll(); job.JobParameters = new List(); foreach (var param in ParameterRepository.Current.ListAll()) { JobParameter jp = new JobParameter(job, param); job.JobParameters.Add(jp); } job.IsFullTime = true; job.ShowCompanyLogo = false; job.ShowCompanyName = false; job.CreateDate = DateTime.UtcNow; job.Avalin = avalin; avalin.Jobs.Add(job); return job; } public DovominJob Apply(Dovomin dovomin, Job job, string coverLetter) { DovominJob dj = new DovominJob(dovomin, job); dj.ApplyDate = DateTime.UtcNow; dj.CoverLetter = coverLetter; if (dovomin.DovominJobs.Any(d => d.JobId == job.Id)) { dovomin.DovominJobs.First(d => d.JobId == job.Id).CoverLetter = coverLetter; } else { dovomin.DovominJobs.Add(dj); } Save(); return dj; } #endregion } }