Пример #1
0
        public void StartEvent(PrimeEvent primeEvent)
        {
            if (IsRunning(primeEvent))
            {
                return;
            }
            lock (eventLock)
            {
                var currentPrimeEvent = primeEvents.FirstOrDefault(x => x.EventName == primeEvent.EventName);
                if (currentPrimeEvent == null)
                {
                    var pe = new PrimeEvent {
                        EventName = primeEvent.EventName, EventDescription = primeEvent.EventDescription
                    };

                    foreach (var item in primeEvent.Events)
                    {
                        Division division = new Division {
                            DivisionID = item.Division.DivisionID, DivisionName = item.Division.DivisionName
                        };
                        pe.Events.Add(new InvoiceEvent {
                            Division = division, InvoiceType = item.InvoiceType, Period = item.Period, Username = item.Username
                        });
                    }
                    primeEvents.Add(pe);
                    return;
                }
                if (!IsDivisionRunningInvoice(primeEvent, currentPrimeEvent))
                {
                    currentPrimeEvent.Events.AddRange(primeEvent.Events);
                }
            }
        }
Пример #2
0
        private static bool IsDivisionRunningInvoice(PrimeEvent primeEvent, PrimeEvent currentPrimeEvent)
        {
            var invoiceDivisionValidator = new InvoiceDivisionValidator(currentPrimeEvent.Events);

            foreach (var division in primeEvent.Events)
            {
                var validator = invoiceDivisionValidator.Validate(primeEvent.Events.First());
                if (validator.IsValid)
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #3
0
 public void EndEvent(PrimeEvent primeEvent)
 {
     if (IsRunning(primeEvent))
     {
         lock (eventLock)
         {
             foreach (var item in primeEvent.Events)
             {
                 if (primeEvents.SingleOrDefault(x => x.EventName == primeEvent.EventName).Events.Any(x => x.Division.DivisionID == item.Division.DivisionID))
                 {
                     primeEvents.SingleOrDefault(x => x.EventName == primeEvent.EventName).Events.RemoveAll(x => x.Division.DivisionID == item.Division.DivisionID);
                 }
             }
         }
     }
 }
Пример #4
0
        public bool IsRunning(PrimeEvent primeEvent)
        {
            var currentPrimeEvent = primeEvents.FirstOrDefault(x => x.EventName == primeEvent.EventName);

            if (currentPrimeEvent == null)
            {
                return(false);
            }
            lock (eventLock)
            {
                foreach (var division in currentPrimeEvent.Events)
                {
                    if (primeEvent.Events.Any(x => x.Division.DivisionID == division.Division.DivisionID))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Пример #5
0
 public PrimeEvent GetCurrentRunning(PrimeEvent primeEvent)
 {
     return(primeEvents.SingleOrDefault(x => x.EventName == primeEvent.EventName));
 }