Пример #1
0
        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);
        }
Пример #2
0
        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);
        }