| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | using System;using System.Linq;using Comal.Classes;using InABox.Core;namespace Comal.Stores{    public class EmployeeQualificationStore : BaseStore<EmployeeQualification>    {        protected override void AfterSave(EmployeeQualification entity)        {            base.AfterSave(entity);            var jobs = Provider.Query(new Filter<JobEmployee>(x => x.EmployeeLink.ID).IsEqualTo(entity.Employee.ID)).Rows                .Select(row => row.Get<JobEmployee, Guid>(col => col.JobLink.ID));            foreach (var job in jobs)            {                var jobqualifications = Provider                    .Query(new Filter<JobQualification>(x => x.Job.ID).IsEqualTo(job).And(x => x.Qualification.ID).IsEqualTo(entity.Qualification.ID))                    .Rows.Select(row => row.Get<JobQualification, Guid>(col => col.ID));                foreach (var jobqualification in jobqualifications)                {                    var maps = Provider.Query(new Filter<JobEmployeeQualification>(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<JobQualification>    {        protected override void AfterSave(JobQualification entity)        {            base.AfterSave(entity);            var employees = Provider.Query(new Filter<JobEmployee>(x => x.JobLink.ID).IsEqualTo(entity.Job.ID)).Rows                .Select(row => row.Get<JobEmployee, Guid>(col => col.EmployeeLink.ID));            foreach (var employee in employees)            {                var employeequalifications = Provider                    .Query(new Filter<EmployeeQualification>(x => x.Employee.ID).IsEqualTo(employee).And(x => x.Qualification.ID)                        .IsEqualTo(entity.Qualification.ID)).Rows.Select(row => row.Get<JobQualification, Guid>(col => col.ID));                foreach (var employeequalification in employeequalifications)                {                    var maps = Provider.Query(new Filter<JobEmployeeQualification>(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<JobEmployee>    {        protected override void AfterSave(JobEmployee entity)        {            base.AfterSave(entity);            var employeeid = entity.EmployeeLink.ID;            var jobqualifications = Provider.Query(new Filter<JobQualification>(x => x.Job.ID).IsEqualTo(entity.JobLink.ID));            foreach (var row in jobqualifications.Rows)            {                var jobqualification = row.Get<JobQualification, Guid>(col => col.ID);                var qualificationid = row.Get<JobQualification, Guid>(col => col.Qualification.ID);                var employeequalifications = Provider                    .Query(new Filter<EmployeeQualification>(x => x.Qualification.ID).IsEqualTo(qualificationid).And(x => x.Employee.ID)                        .IsEqualTo(employeeid)).Rows.Select(r => r.Get<EmployeeQualification, Guid>(c => c.ID));                foreach (var employeequalification in employeequalifications)                {                    var maps = Provider.Query(new Filter<JobEmployeeQualification>(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);                    }                }            }        }    }}
 |