using System; using System.Linq; using Comal.Classes; using InABox.Core; namespace Comal.Stores { public class EmployeeQualificationStore : BaseStore { protected override void AfterSave(EmployeeQualification entity) { base.AfterSave(entity); var jobs = Provider.Query(new Filter(x => x.EmployeeLink.ID).IsEqualTo(entity.Employee.ID)).Rows .Select(row => row.Get(col => col.JobLink.ID)); foreach (var job in jobs) { var jobqualifications = Provider .Query(new Filter(x => x.Job.ID).IsEqualTo(job).And(x => x.Qualification.ID).IsEqualTo(entity.Qualification.ID)) .Rows.Select(row => row.Get(col => col.ID)); foreach (var jobqualification in jobqualifications) { var maps = Provider.Query(new Filter(x => x.Required.ID).IsEqualTo(jobqualification) .And(x => x.Available.ID).IsEqualTo(entity.ID)); if (!maps.Rows.Any()) { var map = new JobEmployeeQualification(); map.Required.ID = jobqualification; map.Available.ID = entity.ID; Provider.Save(map); } } } } } public class JobQualificationStore : BaseStore { protected override void AfterSave(JobQualification entity) { base.AfterSave(entity); var employees = Provider.Query(new Filter(x => x.JobLink.ID).IsEqualTo(entity.Job.ID)).Rows .Select(row => row.Get(col => col.EmployeeLink.ID)); foreach (var employee in employees) { var employeequalifications = Provider .Query(new Filter(x => x.Employee.ID).IsEqualTo(employee).And(x => x.Qualification.ID) .IsEqualTo(entity.Qualification.ID)).Rows.Select(row => row.Get(col => col.ID)); foreach (var employeequalification in employeequalifications) { var maps = Provider.Query(new Filter(x => x.Available.ID).IsEqualTo(employeequalification) .And(x => x.Required.ID).IsEqualTo(entity.ID)); if (!maps.Rows.Any()) { var map = new JobEmployeeQualification(); map.Required.ID = entity.ID; map.Available.ID = employeequalification; Provider.Save(map); } } } } } public class JobEmployeeStore : BaseStore { protected override void AfterSave(JobEmployee entity) { base.AfterSave(entity); var employeeid = entity.EmployeeLink.ID; var jobqualifications = Provider.Query(new Filter(x => x.Job.ID).IsEqualTo(entity.JobLink.ID)); foreach (var row in jobqualifications.Rows) { var jobqualification = row.Get(col => col.ID); var qualificationid = row.Get(col => col.Qualification.ID); var employeequalifications = Provider .Query(new Filter(x => x.Qualification.ID).IsEqualTo(qualificationid).And(x => x.Employee.ID) .IsEqualTo(employeeid)).Rows.Select(r => r.Get(c => c.ID)); foreach (var employeequalification in employeequalifications) { var maps = Provider.Query(new Filter(x => x.Available.ID).IsEqualTo(employeequalification) .And(x => x.Required.ID).IsEqualTo(jobqualification)); if (!maps.Rows.Any()) { var map = new JobEmployeeQualification(); map.Required.ID = jobqualification; map.Available.ID = employeequalification; Provider.Save(map); } } } } } }