public void Reload(ref SeatConsolidationRule entity) { if (entity.SaftyGetProperty<bool, IEditingObject>(o => o.IsNew)) { _seatConsolidationRepository.Evict(entity); } else { _seatConsolidationRepository.Refresh(ref entity); } }
public void Reload(ref SeatConsolidationRule entity) { if (entity.SaftyGetProperty <bool, IEditingObject>(o => o.IsNew)) { _seatConsolidationRepository.Evict(entity); } else { _seatConsolidationRepository.Refresh(ref entity); } }
// --- Occupation --- // private IEnumerable <List <SeatArrangement> > GetOccupationByConsolidationRule(SeatConsolidationRule rule) { List <List <SeatArrangement> > result = new List <List <SeatArrangement> >(); Func <int, bool> rankFiter = rank => rule.MaxRank >= rank && rule.MinRank <= rank; Func <IEnumerable <Skill>, bool> skillsFiter = agentSkills => { var agnetSkillsCount = agentSkills.Count(); if (rule.MatchWholeSkills && rule.Skills.Count() != agnetSkillsCount) { return(false); } //return rule.Skills.Intersect(agentSkills).Count() == agnetSkillsCount; return(agentSkills.Intersect(rule.Skills).Count() == rule.Skills.Count); }; Func <ISeatingTerm, bool> assignmentTypeFilter = seatingTerm => { var assignment = (AssignmentBase)seatingTerm; if (rule.AssignmentTypes.Count == 0) { return(true); } return(rule.AssignmentTypes.Any(o => o.Name == assignment.Text)); //return rule.AssignmentTypes.Contains(assignment.Style as AssignmentType); }; foreach (var org in rule.Organizations) { foreach (var seatArrList in GetOccupationByOrganization(org, rankFiter, skillsFiter, assignmentTypeFilter)) { bool isAdded = false; foreach (var seatArrangement in seatArrList) { var baseLineTime = new DateTime(seatArrangement.Start.Year, seatArrangement.Start.Month, seatArrangement.Start.Day); double min = (seatArrangement.Start - baseLineTime).TotalMinutes; if (min >= rule.StartValue && min <= rule.EndValue && rule.AppliedDayOfWeeks[(int)baseLineTime.DayOfWeek]) { isAdded = true; break; } baseLineTime = baseLineTime.AddDays(-1.0); min = (seatArrangement.Start - baseLineTime).TotalMinutes; if (rule.EndValue >= 1440 && min >= rule.StartValue && min <= rule.EndValue && rule.AppliedDayOfWeeks[(int)baseLineTime.DayOfWeek]) { isAdded = true; break; } } if (isAdded) { result.Add(seatArrList); } } } return(result.OrderBy(o => o[0].Start)); }
public void Delete(SeatConsolidationRule rule) { _seatConsolidationRepository.MakeTransient(rule); }
public void Save(SeatConsolidationRule rule) { _seatConsolidationRepository.MakePersistent(rule); }
public SeatConsolidationRule Reload(SeatConsolidationRule rule) { _seatConsolidationRepository.Evict(rule); return _seatConsolidationRepository.Get(rule.Id); }
// --- Occupation --- // private IEnumerable<List<SeatArrangement>> GetOccupationByConsolidationRule(SeatConsolidationRule rule) { List<List<SeatArrangement>> result = new List<List<SeatArrangement>>(); Func<int, bool> rankFiter = rank => rule.MaxRank >= rank && rule.MinRank <= rank; Func<IEnumerable<Skill>, bool> skillsFiter = agentSkills => { var agnetSkillsCount = agentSkills.Count(); if (rule.MatchWholeSkills && rule.Skills.Count() != agnetSkillsCount) return false; //return rule.Skills.Intersect(agentSkills).Count() == agnetSkillsCount; return agentSkills.Intersect(rule.Skills).Count() == rule.Skills.Count; }; Func<ISeatingTerm, bool> assignmentTypeFilter = seatingTerm => { var assignment = (AssignmentBase)seatingTerm; if (rule.AssignmentTypes.Count == 0) return true; return rule.AssignmentTypes.Any(o => o.Name == assignment.Text); //return rule.AssignmentTypes.Contains(assignment.Style as AssignmentType); }; foreach (var org in rule.Organizations) { foreach (var seatArrList in GetOccupationByOrganization(org, rankFiter, skillsFiter, assignmentTypeFilter)) { bool isAdded = false; foreach (var seatArrangement in seatArrList) { var baseLineTime = new DateTime(seatArrangement.Start.Year, seatArrangement.Start.Month, seatArrangement.Start.Day); double min = (seatArrangement.Start - baseLineTime).TotalMinutes; if (min >= rule.StartValue && min <= rule.EndValue && rule.AppliedDayOfWeeks[(int)baseLineTime.DayOfWeek]) { isAdded = true; break; } baseLineTime = baseLineTime.AddDays(-1.0); min = (seatArrangement.Start - baseLineTime).TotalMinutes; if (rule.EndValue >= 1440 && min >= rule.StartValue && min <= rule.EndValue && rule.AppliedDayOfWeeks[(int)baseLineTime.DayOfWeek]) { isAdded = true; break; } } if (isAdded) result.Add(seatArrList); } } return result.OrderBy(o => o[0].Start); }
public SeatConsolidationRule Reload(SeatConsolidationRule rule) { _seatConsolidationRepository.Evict(rule); return(_seatConsolidationRepository.Get(rule.Id)); }