Example #1
0
        public Dictionary <AgriculturalStageEnum, FieldsStage> CalculateStagesFromCurrent(FieldsStage currentStage)
        {
            var stages = new Dictionary <AgriculturalStageEnum, FieldsStage>();

            var stagesInfo = _agriculturalStageData.AgriculturalStages.Where(s => s.Id > currentStage.Id);

            currentStage.Duration = _agriculturalStageData.AgriculturalStages.FirstOrDefault(s => s.Id == currentStage.Id).Duration;
            stages.Add(currentStage.Id, currentStage);
            var nextStageDate = currentStage.StartDate + currentStage.Duration;

            foreach (var stage in stagesInfo)
            {
                var newStage = new FieldsStage
                {
                    Id        = stage.Id,
                    StartDate = nextStageDate,
                    Duration  = stage.Duration,
                    IsCurrent = false
                };
                stages.Add(stage.Id, newStage);
                nextStageDate = newStage.StartDate + newStage.Duration;
            }

            return(stages);
        }
Example #2
0
        public void UpdateField(Guid id, int cultureId, AgriculturalStageEnum stage, DateTime startDate)
        {
            var field   = GetField(id);
            var culture = _cropData.Crops.FirstOrDefault(c => c.Id == cultureId);

            field.Culture = culture.Name;

            var currentStage = new FieldsStage
            {
                Id        = stage,
                StartDate = startDate,
                IsCurrent = true
            };
            var stages = _fieldsStageService.CalculateStagesFromCurrent(field.FieldsStages, currentStage);

            field.FieldsStages = stages;

            _fieldsRepository.UpdateField(field);
        }
Example #3
0
        private void AddNewFieldToList(string location, List <Field> fields)
        {
            var field = new Field()
            {
                HouseLocation = location,

                CultureSeedPrice = 0m,
                FertilizePrice   = 0m,
                HarvestTax       = 0m
            };

            var currentStage = new FieldsStage
            {
                Id        = AgriculturalStageEnum.Ready,
                StartDate = DateTime.Now,
                IsCurrent = true
            };

            var stages = _fieldsStageService.CalculateStagesFromCurrent(currentStage);

            field.FieldsStages = stages;

            fields.Add(field);
        }
Example #4
0
        public Dictionary <AgriculturalStageEnum, FieldsStage> CalculateStagesFromCurrent(Dictionary <AgriculturalStageEnum, FieldsStage> stages, FieldsStage currentStage)
        {
            currentStage.Duration = _agriculturalStageData.AgriculturalStages.FirstOrDefault(s => s.Id == currentStage.Id).Duration;

            var nextStageDate = currentStage.StartDate + currentStage.Duration;

            foreach (var stage in stages)
            {
                if (stage.Key == currentStage.Id)
                {
                    stage.Value.StartDate = currentStage.StartDate;
                }
                else if (stage.Key > currentStage.Id)
                {
                    stage.Value.StartDate = nextStageDate;
                    nextStageDate         = stage.Value.StartDate + stage.Value.Duration;

                    if (stage.Key == AgriculturalStageEnum.Restoring && currentStage.Id > AgriculturalStageEnum.Grazing)
                    {
                        stages[AgriculturalStageEnum.Ready].StartDate = nextStageDate;
                    }
                }
            }

            return(stages);
        }