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<Job> 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<JobParameter>();
|
|
|
|
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
|
|
}
|
|
}
|