Exemplo n.º 1
0
        public void CheckConfigurations(ValidationResults results)
        {
            if (AreOverlappingsAllowed)
            {
                return;
            }

            const string errorField   = "CapacityCycleConfigurations";
            string       errorMessage = Translations.ContractModelConfigurationsInvalid;

            var configurations = CapacityCycleConfigurations.OrderBy(c => c.ValidFrom);

            configurations.ForEach(c => c.ClearValidationError(errorField));

            bool overlaps = false;

            foreach (var configuration in configurations)
            {
                var currentPeriod = new TimeRange(configuration.ValidFrom.LocalDateTime,
                                                  configuration.ValidTo.HasValue ? configuration.ValidTo.GetValueOrDefault().LocalDateTime : DateTime.MaxValue);
                overlaps = configurations.Any(c => !c.Equals(configuration) &&
                                              currentPeriod.OverlapsWith(new TimeRange(c.ValidFrom.LocalDateTime,
                                                                                       c.ValidTo.HasValue ? c.ValidTo.GetValueOrDefault().LocalDateTime : DateTime.MaxValue)));
                if (overlaps)
                {
                    break;
                }
            }

            if (overlaps)
            {
                var validationResult = new ValidationResult(errorMessage, this, errorField, null, EntityValidator);

                results.AddResult(validationResult);
                SetValidationError(validationResult);
            }
        }
Exemplo n.º 2
0
        public CapacityCycleConfiguration NewConfiguration(User currentUser)
        {
            var configuration = CapacityCycleConfiguration.Create(this);

            if (CapacityCycleConfigurations != null &&
                CapacityCycleConfigurations.Any())
            {
                // first set the previous period to ended
                CapacityCycleConfiguration previousConfiguration = CapacityCycleConfigurations.FirstOrDefault(m => m.ValidTo == null);
                if (previousConfiguration != null)
                {
                    previousConfiguration.ValidTo        = DateTime.Today.AddDays(-1);
                    previousConfiguration.AreDatesLocked = true;

                    configuration.ValidFrom = DateTime.Today;
                }
                else
                {
                    previousConfiguration = CapacityCycleConfigurations.OrderByDescending(m => m.ValidTo)
                                            .FirstOrDefault();
                    if (previousConfiguration != null)
                    {
                        previousConfiguration.AreDatesLocked = true;
                        configuration.ValidFrom = previousConfiguration.ValidTo.Value.AddDays(1);
                    }
                    else
                    {
                        configuration.ValidFrom = DateTime.Today;
                    }
                }
            }
            else
            {
                configuration.ValidFrom = DateTime.Today;
            }
            return(configuration);
        }