Ejemplo n.º 1
0
        /// <summary>
        /// Resets breaks (E.g. Availability, efficiency)
        /// </summary>
        /// <param name="breaks"></param>
        /// <param name="spots"></param>
        /// <param name="breakRepository"></param>
        private void ResetBreaks(SalesArea salesArea, DateTime fromDateTime, DateTime toDateTime,
                                 bool resetBreakEfficiency, Mutex sharedResourceMutex)
        {
            if (!resetBreakEfficiency)
            {
                return;
            }

            using (var scope = _repositoryFactory.BeginRepositoryScope())
            {
                // Get breaks & schedules to reset
                // Create repositories
                sharedResourceMutex.WaitOne();
                var breakRepository = scope.CreateRepository <IBreakRepository>();
                sharedResourceMutex.ReleaseMutex();

                var breaks = breakRepository.Search(fromDateTime, toDateTime, salesArea.Name).ToList();
                foreach (var @break in breaks)
                {
                    if (resetBreakEfficiency)
                    {
                        @break.BreakEfficiencyList = null;
                    }
                    breakRepository.Add(@break);
                }
                breakRepository.SaveChanges();
            }
        }
        /// <summary>
        /// Load breaks for break efficiency import record if not already in memory
        /// </summary>
        /// <param name="salesArea"></param>
        /// <param name="breakEfficiencyImport"></param>
        /// <param name="schedules"></param>
        private void LoadBreaks(SalesArea salesArea, BreakEfficiencyImport breakEfficiencyImport, List <ScheduleIndexed <Break, int> > schedules, IScheduleRepository scheduleRepository)
        {
            DateTime startDateTime = GetStartDateTime(breakEfficiencyImport);

            // Load Schedule document if necessary
            var schedule = schedules.Where(s => s.SalesArea == salesArea.Name && s.Date.Date == startDateTime.Date).FirstOrDefault();

            if (schedule == null)       // Not in memory, load it
            {
                var scheduleObject = scheduleRepository.GetSchedule(salesArea.Name, startDateTime.Date);
                if (scheduleObject != null)
                {
                    if (scheduleObject.Breaks != null && scheduleObject.Breaks.Count > 0)  // Schedule has breaks
                    {
                        _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0, 0, string.Format("Break Efficiency processing. Schedule loaded for sales area {0} and date {1}", salesArea.Name, startDateTime.Date)));
                        scheduleObject.Breaks.ForEach(@break => @break.BreakEfficiencyList = null);
                    }
                    else    // No breaks
                    {
                        _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForWarningMessage(0, 0, string.Format("Break Efficiency processing. Schedule document has no breaks for sales area {0} and date {1}", salesArea.Name, startDateTime.Date)));
                    }
                    schedules.Add(new ScheduleIndexed <Break, int>(scheduleObject, delegate(Break currentBreak) { return(currentBreak); }, delegate(Break currentBreak) { return(currentBreak.CustomId); }));
                }
                else    // No Schedule document, log warning
                {
                    _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForWarningMessage(0, 0, string.Format("Break Efficiency processing. Schedule document does not exist for sales area {0} and date {1}", salesArea.Name, startDateTime.Date)));
                }
            }
        }
        private static void ValidateWithSpotRestrictions(
            SmoothBreak theSmoothBreak,
            Programme programme,
            SalesArea salesArea,
            IReadOnlyCollection <Spot> spotsForBreak,
            SmoothResources smoothResources,
            IReadOnlyCollection <Break> breaksBeingSmoothed,
            IReadOnlyCollection <Programme> scheduleProgrammes,
            SmoothFailureMessagesForSpotsCollection result)
        {
            var anyRestrictions = CheckRestrictionsForSpots(
                spotsForBreak,
                theSmoothBreak.TheBreak,
                programme,
                salesArea,
                smoothResources,
                breaksBeingSmoothed,
                scheduleProgrammes);

            foreach (var item in anyRestrictions)
            {
                foreach (var failure in item.Value.Failures)
                {
                    result.Add(item.Key, failure.FailureMessage, failure.Restriction);
                }
            }
        }
        GatherSpotBookingRules(SalesArea salesArea)
        {
            var spotBookingRules = _dbContext.Query <SpotBookingRule>()
                                   .AsNoTracking()
                                   .Include(x => x.SalesAreas)
                                   .Where(x =>
                                          x.SalesAreas.Any(t => t.SalesAreaId == salesArea.Id))
                                   .ToArray();

            var spotBookingRulesToDelete      = new List <SpotBookingRule>();
            var bookingRuleSalesAreasToDelete = new List <SpotBookingRuleSalesArea>();

            foreach (var bookingRule in spotBookingRules)
            {
                if (bookingRule.SalesAreas.Count == 1)
                {
                    spotBookingRulesToDelete.Add(bookingRule);

                    continue;
                }

                bookingRuleSalesAreasToDelete.AddRange(bookingRule.SalesAreas.Where(x => x.SalesAreaId == salesArea.Id));
            }

            return(spotBookingRulesToDelete, bookingRuleSalesAreasToDelete);
        }
        private void DeleteOrUpdateSpotBookingRules(SalesArea salesArea)
        {
            var spotBookingRulesToDelete = new List <SpotBookingRule>();

            var spotBookingRules = GetByQuery <SpotBookingRule>
                                       (_session.Query <SpotBookingRule>()
                                       .Where(x => x.SalesAreas.Any(sa => sa == salesArea.Name ||
                                                                    sa == salesArea.ShortName)));

            foreach (var spotBookingRule in spotBookingRules)
            {
                if (spotBookingRule.SalesAreas.Count == 1)
                {
                    spotBookingRulesToDelete.Add(spotBookingRule);
                }
                else
                {
                    spotBookingRule.SalesAreas.RemoveAll(sa => sa == salesArea.Name ||
                                                         sa == salesArea.ShortName);
                }
            }

            _session.SaveChanges();

            BulkDelete(spotBookingRulesToDelete);
        }
        private void DeleteOrUpdatePassRatingPoints(SalesArea salesArea)
        {
            var notStartedPasses = GetNotStartedPasses();

            foreach (var pass in notStartedPasses)
            {
                var ratingPointsToDelete = new List <RatingPoint>();

                if (pass.RatingPoints is null)
                {
                    continue;
                }

                foreach (var ratingPoint in pass.RatingPoints)
                {
                    ratingPoint.SalesAreas = ratingPoint.SalesAreas
                                             .Where(sa => sa != salesArea.Name &&
                                                    sa != salesArea.ShortName);

                    if (!ratingPoint.SalesAreas.Any())
                    {
                        ratingPointsToDelete.Add(ratingPoint);
                    }
                }

                pass.RatingPoints = pass.RatingPoints.Where(r => !ratingPointsToDelete.Contains(r)).ToList();
            }

            _session.SaveChanges();
        }
        private void DeleteOrUpdateRestrictions(SalesArea salesArea)
        {
            var restrictionsToDelete = new List <Restriction>();

            var restrictions = GetByQuery <Restriction>
                                   (_session.Query <Restriction>()
                                   .Where(x => x.SalesAreas.Any(sa => sa == salesArea.Name ||
                                                                sa == salesArea.ShortName)));

            foreach (var restriction in restrictions)
            {
                if (restriction.SalesAreas.Count == 1)
                {
                    restrictionsToDelete.Add(restriction);
                }
                else
                {
                    restriction.SalesAreas.RemoveAll(sa => sa == salesArea.Name ||
                                                     sa == salesArea.ShortName);
                }
            }

            _session.SaveChanges();

            BulkDelete(restrictionsToDelete);
        }
        private void DeleteOrUpdateLibrarySalesAreaPassPriorities(SalesArea salesArea)
        {
            var passPrioritiesToDelete = new List <LibrarySalesAreaPassPriority>();

            var passPriorities = GetByQuery <LibrarySalesAreaPassPriority>
                                     (_session.Query <LibrarySalesAreaPassPriority>()
                                     .Where(x => x.SalesAreaPriorities.Any(x => x.SalesArea == salesArea.Name ||
                                                                           x.SalesArea == salesArea.ShortName)));

            foreach (var passPriority in passPriorities)
            {
                if (passPriority.SalesAreaPriorities.Count == 1)
                {
                    passPrioritiesToDelete.Add(passPriority);
                }
                else
                {
                    passPriority.SalesAreaPriorities.RemoveAll(x => x.SalesArea == salesArea.Name ||
                                                               x.SalesArea == salesArea.ShortName);
                }
            }

            _session.SaveChanges();

            BulkDelete(passPrioritiesToDelete);
        }
        private void UpdateSponsorships(SalesArea salesArea)
        {
            var sponsorships = GetByQuery <Sponsorship>
                                   (_session.Query <Sponsorship>());

            var sponsoredItems = sponsorships.SelectMany(x => x.SponsoredItems).ToList();

            foreach (var sponsoredItem in sponsoredItems)
            {
                var sponsorshipItemsToDelete = new List <SponsorshipItem>();

                var sponsorshipItems = sponsoredItem.SponsorshipItems;

                foreach (var sponsorshipItem in sponsorshipItems)
                {
                    sponsorshipItem.SalesAreas = sponsorshipItem.SalesAreas
                                                 .Where(x => x != salesArea.Name &&
                                                        x != salesArea.ShortName);

                    if (!sponsorshipItem.SalesAreas.Any())
                    {
                        sponsorshipItemsToDelete.Add(sponsorshipItem);
                    }
                }

                sponsoredItem.SponsorshipItems =
                    sponsoredItem.SponsorshipItems.Where(x => !sponsorshipItemsToDelete.Contains(x));
            }

            _session.SaveChanges();
        }
        /// <summary> Updates break efficiency on both Break & Schedule
        /// documents </summary> <param name="salesArea"></param> <param
        /// name="breakEfficiencyImport"></param> <param name="schedules"></param>
        private bool UpdateBreakEfficiency(SalesArea salesArea, BreakEfficiencyImport breakEfficiencyImport, List <ScheduleIndexed <Break, int> > schedules, Dictionary <int, Demographic> demographicsById)
        {
            bool success       = false;
            var  startDateTime = GetStartDateTime(breakEfficiencyImport);

            // Set break efficiency on Schedule document
            var schedule = schedules.Where(s => s.SalesArea == salesArea.Name && s.Date == startDateTime.Date)
                           .OrderByDescending(s => (s.BreaksByKey.Count))
                           .FirstOrDefault();

            if (schedule != null)    // Schedule document found
            {
                var breakForSchedule = schedule.GetBreak(breakEfficiencyImport.break_no);
                if (breakForSchedule != null)   // Break found
                {
                    success = true;
                    var demographic = demographicsById.ContainsKey(breakEfficiencyImport.demo_no) ? demographicsById[breakEfficiencyImport.demo_no] : null;

                    if (breakForSchedule.BreakEfficiencyList == null)
                    {
                        breakForSchedule.BreakEfficiencyList = new List <BreakEfficiency>();
                    }

                    // TODO: Re-enable this when Break.Efficiency has been added
                    breakForSchedule.BreakEfficiencyList.Add(new BreakEfficiency(demographic.ExternalRef, breakEfficiencyImport.eff));
                }
            }
            return(success);
        }
        GatherPassRatingPoints(SalesArea salesArea, int[] notStartedPassIds)
        {
            var passRatingPoints = _dbContext.Query <PassRatingPoint>()
                                   .AsNoTracking()
                                   .Include(x => x.SalesAreas)
                                   .Where(x => notStartedPassIds.Contains(x.PassId) &&
                                          x.SalesAreas.Any(x => x.SalesAreaId.Equals(salesArea.Id)))
                                   .ToArray();

            var passRatingPointsToUpdate = new List <PassRatingPoint>();
            var passRatingPointsToDelete = new List <PassRatingPoint>();

            foreach (var ratingPoint in passRatingPoints)
            {
                if (ratingPoint.SalesAreas.Count == 1)
                {
                    passRatingPointsToDelete.Add(ratingPoint);

                    continue;
                }

                var salesAreaToRemove = ratingPoint.SalesAreas.FirstOrDefault(s => s.SalesAreaId == salesArea.Id);
                if (salesAreaToRemove != null)
                {
                    _ = ratingPoint.SalesAreas.Remove(salesAreaToRemove);
                    _dbContext.Remove(salesAreaToRemove);
                }

                passRatingPointsToUpdate.Add(ratingPoint);
            }

            return(passRatingPointsToDelete, passRatingPointsToUpdate);
        }
        GatherRestrictions(SalesArea salesArea)
        {
            var restrictionsToDelete          = new List <Restriction>();
            var restrictionSalesAreasToDelete = new List <RestrictionSalesArea>();

            var restrictions = _dbContext.Query <Restriction>()
                               .AsNoTracking()
                               .Include(x => x.SalesAreas)
                               .Where(x => x.SalesAreas.Any(sa =>
                                                            sa.SalesAreaId == salesArea.Id))
                               .ToArray();

            foreach (var restriction in restrictions)
            {
                if (restriction.SalesAreas.Count == 1)
                {
                    restrictionsToDelete.Add(restriction);

                    continue;
                }

                restrictionSalesAreasToDelete.AddRange(restriction.SalesAreas
                                                       .Where(x =>
                                                              x.SalesAreaId == salesArea.Id));
            }

            return(restrictionsToDelete, restrictionSalesAreasToDelete);
        }
Ejemplo n.º 13
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (!ValidateMandatoryFields())
            {
                return;
            }
            var existingRole = uowArea.Repository.GetAll().Where(r => r.AreaCode == txtAreaCode.Text.Trim()).FirstOrDefault();

            if (existingRole != null)
            {
                CommonMessageHelper.DataAlreadyExist(txtAreaCode.Text.Trim());
            }
            else
            {
                var areaToAdd = new SalesArea
                {
                    AreaCode         = txtAreaCode.Text.Trim(),
                    Description      = txtDescription.Text.Trim(),
                    RepresentativeId = cbRepresentative.SelectedValue.ToString(),

                    // Audit Fields
                    CreatedBy  = Properties.Settings.Default.CurrentUserId,
                    CreatedAt  = DateTime.Now,
                    ModifiedBy = Properties.Settings.Default.CurrentUserId,
                    ModifiedAt = DateTime.Now
                };
                uowArea.Repository.Add(areaToAdd);
                uowArea.Commit();
                isAdd = true;
                btnReload.PerformClick();
                CommonMessageHelper.DataSavedSuccessfully();
            }
        }
 private void SetupTestData(
     out IReadOnlyCollection<Break> breaksBeingSmoothed,
     out SmoothBreak theSmoothBreak,
     out IReadOnlyCollection<Programme> scheduleProgrammes,
     out List<Spot> spotsForBreak,
     out SalesArea salesArea,
     out IReadOnlyDictionary<string, Clash> clashesByExternalRef,
     out IReadOnlyDictionary<Guid, SpotInfo> spotInfos,
     out ProductClashRules productClashRule,
     out SmoothResources smoothResources,
     out IClashExposureCountService clashExposureCountService,
     out SponsorshipRestrictionService sponsorshipRestrictionsService)
 {
     breaksBeingSmoothed = _repositoryWrapper.LoadAllTestBreaks().ToList();
     theSmoothBreak = new SmoothBreak(breaksBeingSmoothed.First(), 1);
     scheduleProgrammes = _repositoryWrapper.LoadAllProgrammes().ToList();
     spotsForBreak = new List<Spot>() { _spot };
     salesArea = _repositoryWrapper.LoadAllSalesArea().First();
     clashesByExternalRef = _repositoryWrapper.LoadAllClashes().ToDictionary(c => c.Externalref);
     spotInfos = SpotInfo.Factory(
         spotsForBreak,
         _repositoryWrapper.LoadAllProducts().ToDictionary(p => p.Externalidentifier),
         clashesByExternalRef
         );
     productClashRule = ProductClashRules.LimitOnExposureCount;
     smoothResources = new SmoothResources();
     clashExposureCountService = ClashExposureCountService.Create();
     sponsorshipRestrictionsService = SponsorshipRestrictionService.Factory(
         spotInfos,
         new SponsorshipRestrictionFilterService(ImmutableList.Create<Sponsorship>()),
         new SmoothSponsorshipTimelineManager(new List<SmoothSponsorshipTimeline>()),
         scheduleProgrammes.First(),
         DebugLogger);
 }
Ejemplo n.º 15
0
        private static void AddRestrictionForParentProgrammeCategory(
            Dictionary <string, ProgrammeDictionary> programmeDictionaries,
            DateTime runEndDate,
            AgRestriction agRestriction,
            Restriction restriction,
            SalesArea salesArea,
            List <AgRestriction> agRestrictions,
            string clashCode,
            Dictionary <string, ProgrammeCategoryHierarchy> programmeCategoriesExternalRefIndex,
            Dictionary <int, ProgrammeCategoryHierarchy> programmeCategoriesIdIndex,
            int programmeCategoryId)
        {
            if (!programmeCategoriesIdIndex.TryGetValue(programmeCategoryId, out var category) || string.IsNullOrEmpty(category.ParentExternalRef))
            {
                return;
            }

            var parentCategoryNum = programmeCategoriesExternalRefIndex.TryGetValue(category.ParentExternalRef, out var parentCategory) ? parentCategory.Id : 0;

            if (parentCategoryNum == 0)
            {
                return;
            }

            var agRestrictionClone = agRestriction.Clone();

            agRestrictionClone.ProductCode = restriction.ProductCode;
            agRestrictionClone.ClashCode   = clashCode;
            agRestrictionClone.CopyCode    = string.IsNullOrWhiteSpace(restriction.ClockNumber)
                ? "0"
                : restriction.ClockNumber;
            agRestrictionClone.ClearanceCode  = restriction.ClearanceCode ?? "";
            agRestrictionClone.SalesAreaNo    = salesArea?.CustomId ?? 0;
            agRestrictionClone.ProgCategoryNo = parentCategoryNum;
            agRestrictionClone.ProgrammeNo    =
                !string.IsNullOrWhiteSpace(restriction.ExternalProgRef) && programmeDictionaries.TryGetValue(restriction.ExternalProgRef.ToUpper(), out var programme)
                    ? programme.Id
                    : 0;
            agRestrictionClone.StartDate = restriction.StartDate.ToString("yyyyMMdd");
            agRestrictionClone.EndDate   = restriction.EndDate.HasValue
                ? restriction.EndDate?.ToString("yyyyMMdd")
                : runEndDate.AddYears(10).ToString("yyyyMMdd");
            agRestrictionClone.IndexType              = restriction.IndexType;
            agRestrictionClone.IndexThreshold         = restriction.IndexThreshold;
            agRestrictionClone.PublicHolidayIndicator =
                AgConversions.ToAgIncludeExcludeEither(restriction.PublicHolidayIndicator);
            agRestrictionClone.SchoolHolidayIndicator =
                AgConversions.ToAgIncludeExcludeEither(restriction.SchoolHolidayIndicator);
            agRestrictionClone.RestrictionType         = Convert.ToInt32(restriction.RestrictionType);
            agRestrictionClone.RestrictionDays         = AgConversions.ToAgDaysAsInt(restriction.RestrictionDays);
            agRestrictionClone.StartTime               = restriction.StartTime?.ToString("hhmmss") ?? "0";
            agRestrictionClone.EndTime                 = restriction.EndTime?.ToString("hhmmss") ?? "995959";
            agRestrictionClone.TimeToleranceMinsBefore = restriction.TimeToleranceMinsBefore;
            agRestrictionClone.TimeToleranceMinsAfter  = restriction.TimeToleranceMinsAfter;
            agRestrictionClone.ProgClassCode           = restriction.ProgrammeClassification ?? "";
            agRestrictionClone.ProgClassFlag           = restriction.ProgrammeClassificationIndicator.ToString();
            agRestrictionClone.LiveBroadcastFlag       = restriction.LiveProgrammeIndicator.ToString();

            agRestrictions.Add(agRestrictionClone);
        }
Ejemplo n.º 16
0
        public SmoothDateRange(
            Guid runId,
            Guid firstScenarioId,
            DateTime processorDateTime,
            SalesArea salesArea,
            ISmoothConfiguration smoothConfiguration,
            ISmoothDiagnostics smoothDiagnostics,
            ImmutableSmoothData threadSafeCollections,
            IClashExposureCountService clashExposureCountService,
            SaveSmoothChanges saveSmoothChanges,
            IRepositoryFactory repositoryFactory,
            Action <string> raiseInfo,
            Action <string> raiseWarning,
            Action <string, Exception> raiseException)
        {
            RaiseInfo                  = raiseInfo;
            RaiseWarning               = raiseWarning;
            RaiseException             = raiseException;
            _threadSafeCollections     = threadSafeCollections;
            _clashExposureCountService = clashExposureCountService;
            _saveSmoothChanges         = saveSmoothChanges;
            _repositoryFactory         = repositoryFactory;
            _runId                        = runId;
            _firstScenarioId              = firstScenarioId;
            _processorDateTime            = processorDateTime;
            _salesArea                    = salesArea;
            _smoothConfiguration          = smoothConfiguration;
            _smoothDiagnostics            = smoothDiagnostics;
            _smoothFailuresFactory        = new SmoothFailuresFactory(_smoothConfiguration);
            _smoothRecommendationsFactory = new SmoothRecommendationsFactory(_smoothConfiguration);

            _smoothPasses = _smoothConfiguration.SortedSmoothPasses;
        }
        GatherSponsorshipItems(SalesArea salesArea)
        {
            var sponsorshipItems = _dbContext.Query <SponsorshipItem>()
                                   .AsNoTracking()
                                   .Include(x => x.SalesAreas)
                                   .Where(x => x.SalesAreas.Any(x => x.SalesAreaId == salesArea.Id))
                                   .ToArray();

            var sponsorshipItemsToDelete = new List <SponsorshipItem>();
            var sponsorshipItemsToUpdate = new List <SponsorshipItem>();

            foreach (var sponsorshipItem in sponsorshipItems)
            {
                if (sponsorshipItem.SalesAreas.Count == 1)
                {
                    sponsorshipItemsToDelete.Add(sponsorshipItem);

                    continue;
                }
                var salesAreaRef = sponsorshipItem.SalesAreas.FirstOrDefault(x => x.SalesAreaId == salesArea.Id);
                if (salesAreaRef != null)
                {
                    _ = sponsorshipItem.SalesAreas.Remove(salesAreaRef);
                    sponsorshipItemsToUpdate.Add(sponsorshipItem);
                }
            }

            return(sponsorshipItemsToDelete, sponsorshipItemsToUpdate);
        }
        private void DeleteSalesAreaDemographics(SalesArea salesArea)
        {
            var salesAreaDemographics = GetByQuery <SalesAreaDemographic>
                                            (_session.Query <SalesAreaDemographic>()
                                            .Where(x => x.SalesArea == salesArea.Name ||
                                                   x.SalesArea == salesArea.ShortName));

            BulkDelete(salesAreaDemographics);
        }
Ejemplo n.º 19
0
        public void Add(SalesArea salesArea)
        {
            List <SalesArea> items = new List <SalesArea>()
            {
                salesArea
            };

            InsertItems(_folder, _type, items, items.ConvertAll(i => i.Id.ToString()));
        }
        private void DeleteTotalRatings(SalesArea salesArea)
        {
            var totalRatings = GetByQuery <TotalRating>
                                   (_session.Query <TotalRating>()
                                   .Where(x => x.SalesArea == salesArea.Name ||
                                          x.SalesArea == salesArea.ShortName));

            BulkDelete(totalRatings);
        }
        private void DeleteBreaks(SalesArea salesArea)
        {
            var breaksToDelete = GetByQuery <Break>
                                     (_session.Query <Break>()
                                     .Where(x => x.SalesArea == salesArea.Name ||
                                            x.SalesArea == salesArea.ShortName));

            BulkDelete(breaksToDelete);
        }
        private void DeleteUniverses(SalesArea salesArea)
        {
            var universes = GetByQuery <Universe>
                                (_session.Query <Universe>()
                                .Where(x => x.SalesArea == salesArea.Name ||
                                       x.SalesArea == salesArea.ShortName));

            BulkDelete(universes);
        }
        private void DeleteSpots(SalesArea salesArea)
        {
            var spots = GetByQuery <Spot>
                            (_session.Query <Spot>()
                            .Where(x => x.SalesArea == salesArea.Name ||
                                   x.SalesArea == salesArea.ShortName));

            BulkDelete(spots);
        }
Ejemplo n.º 24
0
        private int CreateSpotPlacementData(SalesArea salesArea, Mutex sharedResourceMutex, DateTime fromDate, DateTime toDate, DateTime modifiedTime)
        {
            int countSpotsDone = 0;

            // Process spots in date range batches
            foreach (DateTime[] dateRange in DateHelper.GetDateRanges(fromDate, toDate, 7))
            {
                using (var scope = _repositoryFactory.BeginRepositoryScope())
                {
                    sharedResourceMutex.WaitOne();
                    var spotRepository = scope.CreateRepository <ISpotRepository>();
                    sharedResourceMutex.ReleaseMutex();

                    // Get spots for date range
                    var spots = spotRepository.Search(dateRange[0], dateRange[1], salesArea.Name).OrderBy(s => s.ExternalSpotRef);
                    HashSet <string> spotsDone = new HashSet <string>();

                    // Create spot placements, saved in batches
                    List <SpotPlacement> spotPlacementBatch = new List <SpotPlacement>();
                    foreach (var spot in spots)
                    {
                        countSpotsDone++;
                        SpotPlacement spotPlacement = new SpotPlacement()
                        {
                            ModifiedTime     = modifiedTime,
                            ExternalSpotRef  = spot.ExternalSpotRef,
                            ExternalBreakRef = spot.ExternalBreakNo
                        };
                        if (!spotsDone.Contains(spotPlacement.ExternalSpotRef))  // Handle duplicates
                        {
                            spotsDone.Add(spotPlacement.ExternalSpotRef);
                            spotPlacementBatch.Add(spotPlacement);
                        }

                        // Save batch
                        if ((spotPlacementBatch.Count >= 10000) || ((spot == spots.Last() && spotPlacementBatch.Count > 0)))
                        {
                            using (var scope2 = scope.BeginRepositoryScope())
                            {
                                sharedResourceMutex.WaitOne();
                                var spotPlacementRepository = scope2.CreateRepository <ISpotPlacementRepository>();
                                sharedResourceMutex.ReleaseMutex();
                                spotPlacementRepository.Insert(spotPlacementBatch);
                                spotPlacementRepository.SaveChanges();
                                spotPlacementBatch.Clear();
                            }
                        }

                        if (countSpotsDone % 10000 == 0)
                        {
                            System.Diagnostics.Debug.Write(string.Format("Created {0} SpotPlacement documents for {1}", countSpotsDone, salesArea.Name));
                        }
                    }
                }
            }
            return(countSpotsDone);
        }
        private void DeleteSchedules(SalesArea salesArea)
        {
            var schedules = GetByQuery <Schedule>
                                (_session.Query <Schedule>()
                                .Where(x => x.SalesArea == salesArea.Name ||
                                       x.SalesArea == salesArea.ShortName));

            BulkDelete(schedules);
        }
 private static string EndTimeIsBeforeBroadcastStartTimeMessage(SalesArea salesArea, BreakExclusionModel breakExclusion)
 {
     return(string.Format(
                CultureInfo.CurrentCulture
                , EndTimeIsBeforeBroadcastStartTimeMessageFormat
                , SalesAreaDescription(salesArea)
                , breakExclusion.EndTime
                , salesArea.StartOffset.ToTimeSpan()));
 }
 private static string StartTimeIsAfterBroadcastEndTimeMessage(SalesArea salesArea, BreakExclusionModel breakExclusion)
 {
     return(string.Format(
                CultureInfo.CurrentCulture
                , StartTimeIsAfterBroadcastEndTimeMessageFormat
                , SalesAreaDescription(salesArea)
                , breakExclusion.StartTime
                , salesArea.StartOffset.ToTimeSpan().Add(salesArea.DayDuration.ToTimeSpan()).Subtract(new TimeSpan(0, 0, 1))));
 }
        private void DeleteProgrammes(SalesArea salesArea)
        {
            var programmes = GetByQuery <Programme>
                                 (_session.Query <Programme>()
                                 .Where(x => x.SalesArea == salesArea.Name ||
                                        x.SalesArea == salesArea.ShortName));

            BulkDelete(programmes);
        }
 private static string EndDateBeforeStartDateMessage(SalesArea salesArea, BreakExclusionModel breakExclusion)
 {
     return(string.Format(
                CultureInfo.CurrentCulture
                , EndDateBeforeStartDateMessageFormat
                , SalesAreaDescription(salesArea)
                , breakExclusion.EndDate.ToShortDateString()
                , breakExclusion.StartDate.ToShortDateString()));
 }
 private static string StartimeIsAfterEndTimeMessage(SalesArea salesArea, BreakExclusionModel breakExclusion)
 {
     return(string.Format(
                CultureInfo.CurrentCulture
                , StartimeIsAfterEndTimeMessageFormat
                , SalesAreaDescription(salesArea)
                , breakExclusion.EndTime
                , breakExclusion.StartTime));
 }
Ejemplo n.º 31
0
 partial void UpdateSalesArea(SalesArea instance);
Ejemplo n.º 32
0
 partial void InsertSalesArea(SalesArea instance);
Ejemplo n.º 33
0
 public bool UpdateSaleArea(int salesmenId, int areaId)
 {
     var o = (from e in db.SalesAreas where e.SalesmenId == salesmenId && e.AreaId == areaId select e).SingleOrDefault();
     if (o != null)
     {
         try
         {
             db.SalesAreas.DeleteOnSubmit(o);
             db.SubmitChanges();
             return true;
         }
         catch
         {
             return false;
         }
     }
     else
     {
         try
         {
             SalesArea sr = new SalesArea();
             sr.AreaId = areaId;
             sr.SalesmenId = salesmenId;
             db.SalesAreas.InsertOnSubmit(sr);
             db.SubmitChanges();
             return true;
         }
         catch
         {
             return false;
         }
     }
 }
Ejemplo n.º 34
0
    public bool Add(string upiCode, string fullName, string phone, int roleId, int smsQuota, DateTime expiredDate,
        int groupId, int regionId, int areaId, int localId)
    {
        try
        {
            if (CheckExistedSalemen(-1, phone)) return false;

            var o = new Salesmen
                        {
                            UpiCode = upiCode,
                            FullName = fullName,
                            Phone = phone,
                            RoleId = roleId,
                            SmsQuota = smsQuota,
                            ExpiredDate = expiredDate
                        };
            db.Salesmens.InsertOnSubmit(o);
            db.SubmitChanges();

            int salesMenId = o.Id;
            if (groupId != 0)
            {
                // insert Group to SaleGroup
                SalesGroup salesGroup = new SalesGroup();
                salesGroup.GroupId = groupId;
                salesGroup.SalesmenId = salesMenId;
                db.SalesGroups.InsertOnSubmit(salesGroup);
                db.SubmitChanges();
            }

            if (regionId != 0)
            {
                // insert region
                SalesRegion salesRegion = new SalesRegion();
                salesRegion.SalesmenId = salesMenId;
                salesRegion.RegionId = regionId;
                db.SalesRegions.InsertOnSubmit(salesRegion);
                db.SubmitChanges();
            }

            if (areaId != 0)
            {
                // insert area
                SalesArea salesArea = new SalesArea();
                salesArea.SalesmenId = salesMenId;
                salesArea.AreaId = areaId;
                db.SalesAreas.InsertOnSubmit(salesArea);
                db.SubmitChanges();
            }

            if (localId != 0)
            {
                // insert area
                SalesLocal salesLocal = new SalesLocal();
                salesLocal.SalesmenId = salesMenId;
                salesLocal.LocalId = localId;
                db.SalesLocals.InsertOnSubmit(salesLocal);
                db.SubmitChanges();
            }

            return true;
        }
        catch
        {
            return false;
        }
    }
Ejemplo n.º 35
0
    public bool Edit(int id, string upiCode, string fullName, string phone, int roleId, int smsQuota, DateTime expiredDate, 
        int groupId, int regionId, int areaId, int localId)
    {
        try
        {
            if (CheckExistedSalemen(id, phone)) return false;

            var o = (from e in db.Salesmens where e.Id == id select e).SingleOrDefault();
            if (o != null)
            {
                o.UpiCode = upiCode;
                o.FullName = fullName;
                o.Phone = phone;
                o.RoleId = roleId;
                o.SmsQuota = smsQuota;
                o.ExpiredDate = expiredDate;
                db.SubmitChanges();

                int salesMenId = id;
                if (groupId != 0)
                {
                    //// delete all existing setting for this 
                    //db.SalesGroups.DeleteAllOnSubmit(from sg in db.SalesGroups where sg.SalesmenId == salesMenId select sg);

                    // insert Group to SaleGroup
                    SalesGroup salesGroup = new SalesGroup();
                    salesGroup.GroupId = groupId;
                    salesGroup.SalesmenId = salesMenId;
                    db.SalesGroups.InsertOnSubmit(salesGroup);
                    db.SubmitChanges();
                }

                if (regionId != 0)
                {
                    // insert region
                    SalesRegion salesRegion = new SalesRegion();
                    salesRegion.SalesmenId = salesMenId;
                    salesRegion.RegionId = regionId;
                    db.SalesRegions.InsertOnSubmit(salesRegion);
                    db.SubmitChanges();
                }

                if (areaId != 0)
                {
                    // insert area
                    SalesArea salesArea = new SalesArea();
                    salesArea.SalesmenId = salesMenId;
                    salesArea.AreaId = areaId;
                    db.SalesAreas.InsertOnSubmit(salesArea);
                    db.SubmitChanges();
                }

                if (localId != 0)
                {
                    // insert area
                    SalesLocal salesLocal = new SalesLocal();
                    salesLocal.SalesmenId = salesMenId;
                    salesLocal.LocalId = localId;
                    db.SalesLocals.InsertOnSubmit(salesLocal);
                    db.SubmitChanges();
                }

                return true;
            }
            return false;
        }
        catch
        {
            return false;
        }
    }
Ejemplo n.º 36
0
 partial void DeleteSalesArea(SalesArea instance);
Ejemplo n.º 37
0
 public bool AddSalesmenArea(int salesmenId, int areaId)
 {
     try
     {
         if (CheckExistSalesArea(salesmenId, areaId) == false)
         {
             SalesArea r = new SalesArea();
             r.SalesmenId = salesmenId;
             r.AreaId = areaId;
             db.SalesAreas.InsertOnSubmit(r);
             db.SubmitChanges();
             return true;
         }
         else
             return false;
     }
     catch
     {
         return false;
     }
 }
Ejemplo n.º 38
0
	private void detach_SalesAreas(SalesArea entity)
	{
		this.SendPropertyChanging();
		entity.Area = null;
	}
Ejemplo n.º 39
0
	private void attach_SalesAreas(SalesArea entity)
	{
		this.SendPropertyChanging();
		entity.Area = this;
	}