public Luna.Core.Tuple <IEnumerable <Campaign>, IList <Organization> > LoadMisc() { var misc = new Core.Tuple <IEnumerable <Campaign>, IList <Organization> > (_campaignRepository.GetAll(), _organizationRepository.GetHierarchicalTree()); return(misc); }
public Schedule EditSchedule(Guid scheduleId, out Luna.Core.Tuple <IEnumerable <ServiceQueue>, IEnumerable <Organization> > relations) { var schedule = _repository.Get(scheduleId); relations = new Core.Tuple <IEnumerable <ServiceQueue>, IEnumerable <Organization> >( _serviceQueueRepository.GetServiceQueueByCampaign(schedule.Campaign as Campaign), _organizationRepository.GetByCampaign(schedule.Campaign)); return(schedule); }
public Schedule CreateNewSchedule(Campaign campaign, out Luna.Core.Tuple<IEnumerable<ServiceQueue>, IEnumerable<Organization>> relations) { var last = _repository.FindLast(campaign); relations = new Core.Tuple<IEnumerable<ServiceQueue>, IEnumerable<Organization>>( _serviceQueueRepository.GetServiceQueueByCampaign(campaign), campaign.Organizations.OfType<Organization>()); IDictionary<ServiceQueue, int> defaultSvcQueues; ICollection<Entity> defaultOrgs; if (last != null) { defaultSvcQueues = new Dictionary<ServiceQueue, int>(last.ServiceQueues); defaultOrgs = new HashedSet<Entity>(last.Organizations); } else { defaultSvcQueues = relations.Item1.ToDictionary(o => o, o => 0); defaultOrgs = new HashedSet<Entity>(relations.Item2.Cast<Entity>().ToList()); } var defaultStart = last == null ? DateTime.Today : last.End; var schedule = _entityFactory.Create<Schedule>(new Dictionary<string, object> { {"Campaign", campaign}, { "ServiceQueues", defaultSvcQueues }, {"Organizations",defaultOrgs}, {"Start", defaultStart}, {"End", defaultStart.AddMonths(1)}, {"Name", string.Format("{0:MMM}", defaultStart)} }); return schedule; }
public Schedule CreateNewSchedule(Campaign campaign, out Luna.Core.Tuple <IEnumerable <ServiceQueue>, IEnumerable <Organization> > relations) { var last = _repository.FindLast(campaign); relations = new Core.Tuple <IEnumerable <ServiceQueue>, IEnumerable <Organization> >( _serviceQueueRepository.GetServiceQueueByCampaign(campaign), campaign.Organizations.OfType <Organization>()); IDictionary <ServiceQueue, int> defaultSvcQueues; ICollection <Entity> defaultOrgs; if (last != null) { defaultSvcQueues = new Dictionary <ServiceQueue, int>(last.ServiceQueues); defaultOrgs = new HashedSet <Entity>(last.Organizations); } else { defaultSvcQueues = relations.Item1.ToDictionary(o => o, o => 0); defaultOrgs = new HashedSet <Entity>(relations.Item2.Cast <Entity>().ToList()); } var defaultStart = last == null ? DateTime.Today : last.End; var schedule = _entityFactory.Create <Schedule>(new Dictionary <string, object> { { "Campaign", campaign }, { "ServiceQueues", defaultSvcQueues }, { "Organizations", defaultOrgs }, { "Start", defaultStart }, { "End", defaultStart.AddMonths(1) }, { "Name", string.Format("{0:MMM}", defaultStart) } }); return(schedule); }
/// <summary> /// 切割时间块 /// </summary> /// <param name="a">A.</param> /// <param name="b">The b.</param> /// <returns></returns> public static IList <Core.Tuple <DateRange, RegionType> > Cut(DateRange a, DateRange b) { IList <Core.Tuple <DateRange, RegionType> > result = new List <Core.Tuple <DateRange, RegionType> >(); if (a.Start < b.Start) { if (a.End <= b.Start) { //|__A__| // |__B__| var t1 = new Core.Tuple <DateRange, RegionType>(a, RegionType.Applier); var t2 = new Core.Tuple <DateRange, RegionType>(b, RegionType.Replier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2 }); } if (a.End < b.End) { // |_A_| // |_B_| DateRange r1 = new DateRange(a.Start, b.Start); DateRange r2 = new DateRange(b.Start, a.End); DateRange r3 = new DateRange(a.End, b.End); var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Applier); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Overlap); var t3 = new Core.Tuple <DateRange, RegionType>(r3, RegionType.Replier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2, t3 }); } if (a.End == b.End) { // |__A__| // |_B_| DateRange r1 = new DateRange(a.Start, b.Start); DateRange r2 = b; var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Applier); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Overlap); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2 }); } else { // |__A__| // |_B_| DateRange r1 = new DateRange(a.Start, b.Start); DateRange r2 = b; DateRange r3 = new DateRange(b.End, a.End); var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Applier); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Overlap); var t3 = new Core.Tuple <DateRange, RegionType>(r3, RegionType.Applier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2, t3 }); } } if (a.Start == b.Start) { if (a.End < b.End) { // |_A_| // |__B__| DateRange r1 = a; DateRange r2 = new DateRange(a.End, b.End); var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Overlap); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Replier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2 }); } if (a.End == b.End) { // |__A__| // |__B__| var t1 = new Core.Tuple <DateRange, RegionType>(a, RegionType.Overlap); return(new List <Core.Tuple <DateRange, RegionType> > { t1 }); } else { // |__A__| // |_B_| DateRange r1 = b; DateRange r2 = new DateRange(b.End, a.End); var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Overlap); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Applier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2 }); } } if (a.Start > b.Start) { if (a.End < b.End) { // |_A_| // |__B__| DateRange r1 = new DateRange(b.Start, a.Start); DateRange r2 = a; DateRange r3 = new DateRange(a.End, b.End); var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Replier); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Overlap); var t3 = new Core.Tuple <DateRange, RegionType>(r3, RegionType.Replier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2, t3 }); } if (a.End == b.End) { // |_A_| // |__B_| DateRange r1 = new DateRange(b.Start, a.Start); DateRange r2 = a; var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Replier); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Overlap); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2 }); } if (a.Start >= b.End) { // |__A__| //|__B__| var t1 = new Core.Tuple <DateRange, RegionType>(a, RegionType.Applier); var t2 = new Core.Tuple <DateRange, RegionType>(b, RegionType.Replier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2 }); } else { // |__A__| // |__B__| DateRange r1 = new DateRange(b.Start, a.Start); DateRange r2 = new DateRange(a.Start, b.End); DateRange r3 = new DateRange(b.End, a.End); var t1 = new Core.Tuple <DateRange, RegionType>(r1, RegionType.Replier); var t2 = new Core.Tuple <DateRange, RegionType>(r2, RegionType.Overlap); var t3 = new Core.Tuple <DateRange, RegionType>(r3, RegionType.Applier); return(new List <Core.Tuple <DateRange, RegionType> > { t1, t2, t3 }); } } return(result); }
public Schedule EditSchedule(Guid scheduleId, out Luna.Core.Tuple<IEnumerable<ServiceQueue>, IEnumerable<Organization>> relations) { var schedule = _repository.Get(scheduleId); relations = new Core.Tuple<IEnumerable<ServiceQueue>, IEnumerable<Organization>>( _serviceQueueRepository.GetServiceQueueByCampaign(schedule.Campaign as Campaign), _organizationRepository.GetByCampaign(schedule.Campaign)); return schedule; }
public Luna.Core.Tuple<IEnumerable<Campaign>, IList<Organization>> LoadMisc() { var misc = new Core.Tuple<IEnumerable<Campaign>, IList<Organization>> (_campaignRepository.GetAll(), _organizationRepository.GetHierarchicalTree()); return misc; }