diff --git a/Sevomin.Models/Job.cs b/Sevomin.Models/Job.cs index ee8e6fc..9a2df7f 100644 --- a/Sevomin.Models/Job.cs +++ b/Sevomin.Models/Job.cs @@ -33,5 +33,6 @@ namespace Sevomin.Models public bool IsFullTime { get; set; } public virtual ICollection JobParameters { get; set; } + } } diff --git a/Sevomin.Models/JobParameter.cs b/Sevomin.Models/JobParameter.cs index 9bc180a..807adb4 100644 --- a/Sevomin.Models/JobParameter.cs +++ b/Sevomin.Models/JobParameter.cs @@ -23,12 +23,39 @@ namespace Sevomin.Models [Required] public long JobId { get; set; } - public string StringValue { get; set; } - public decimal? NumericValue { get; set; } + public string StringValue { get; private set; } + public decimal? NumericValue { get; private set; } public byte Moscow { get; set; } public virtual Parameter Parameter { get; set; } public virtual Job Job { get; set; } + + public JobParameter() + {} + + public JobParameter(Job job, Parameter parameter) + { + this.Job = job; + this.Parameter = parameter; + this.StringValue = ""; + this.NumericValue = null; + this.Moscow = 0; + } + + public void SetValue(string value) + { + decimal val; + if (decimal.TryParse(value, out val)) + { + NumericValue = val; + StringValue = value; + } + else + { + NumericValue = null; + StringValue = value; + } + } } } diff --git a/Sevomin.Models/Repositories/IRepository.cs b/Sevomin.Models/Repositories/IRepository.cs index 172413b..7be887a 100644 --- a/Sevomin.Models/Repositories/IRepository.cs +++ b/Sevomin.Models/Repositories/IRepository.cs @@ -1,4 +1,5 @@ using System.Data.Entity.Core.Objects; +using System.Linq; namespace Sevomin.Models.Repositories { @@ -7,11 +8,22 @@ namespace Sevomin.Models.Repositories void Add(T entity); T Find(K identifier); void Delete(T entity); - void Save(SaveOptions options = SaveOptions.AcceptAllChangesAfterSave); + void Save(); } public interface IUserRepository : IRepository { } + + public interface IJobRepository : IRepository + { + Job GetEmptyJobFor(Avalin avalin); + IQueryable ListAll(); + } + + public interface IParameterRepository : IRepository + { + IQueryable ListAll(); + } } diff --git a/Sevomin.Models/Repositories/JobRepository.cs b/Sevomin.Models/Repositories/JobRepository.cs new file mode 100644 index 0000000..1af83cc --- /dev/null +++ b/Sevomin.Models/Repositories/JobRepository.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +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(); + 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.Avalin = avalin; + avalin.Jobs.Add(job); + return job; + } + #endregion + + } +} diff --git a/Sevomin.Models/Repositories/ParameterRepository.cs b/Sevomin.Models/Repositories/ParameterRepository.cs new file mode 100644 index 0000000..7ae2ffa --- /dev/null +++ b/Sevomin.Models/Repositories/ParameterRepository.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sevomin.Models.Repositories +{ + public class ParameterRepository: IParameterRepository + { + + #region Singleton + private static ParameterRepository member; + private static object locker = new object(); + + private ParameterRepository() + { + } + + static ParameterRepository() + { + lock (locker) + { + ParameterRepository.member = new ParameterRepository(); + } + } + public static ParameterRepository Current + { + get + { + return ParameterRepository.member; + } + + } + #endregion + + #region JobRepository + + public IQueryable ListAll() + { + return SevominDbContext.Current.Parameters; + } + + public Parameter Find(long key) + { + return ListAll().SingleOrDefault(d => d.Id == key); + } + + public void Delete(Parameter d) + { + SevominDbContext.Current.Parameters.Remove(d); + Save(); + } + + public void Add(Parameter d) + { + SevominDbContext.Current.Parameters.Add(d); + Save(); + } + + public void Save() + { + SevominDbContext.Current.SaveChanges(); + } + #endregion + } +} diff --git a/Sevomin.Models/UsersDbContext.cs b/Sevomin.Models/UsersDbContext.cs index 49268d1..abbf502 100644 --- a/Sevomin.Models/UsersDbContext.cs +++ b/Sevomin.Models/UsersDbContext.cs @@ -43,5 +43,7 @@ namespace Sevomin.Models public DbSet Parameters { get; set; } public DbSet ParameterValues { get; set; } + public DbSet Jobs { get; set; } + } }