Esempio n. 1
0
 public SavePlanningBlueprintResponse SavePlanningBlueprint(SavePlanningBlueprintRequest request)
 {
     try
     {
         if (request.Id == 0)
         {
             var planningBluePrint = request.MapTo<PlanningBlueprint>();
             var environmentsScanning = new EnvironmentsScanning();
             var businessPostureIdentification = new BusinessPostureIdentification { IsLocked = true };
             var midtermPhaseFormulation = new MidtermPhaseFormulation { IsLocked = true };
             var midtermStrategyPlanning = new MidtermStrategyPlanning { IsLocked = true };
             var constructionPosture = new Posture { Type = PostureType.Construction };
             var operationPosture = new Posture { Type = PostureType.Operation };
             var decommissioningPosture = new Posture { Type = PostureType.Decommissioning };
             businessPostureIdentification.Postures.Add(constructionPosture);
             businessPostureIdentification.Postures.Add(operationPosture);
             businessPostureIdentification.Postures.Add(decommissioningPosture);
             planningBluePrint.EnvironmentsScanning = environmentsScanning;
             planningBluePrint.BusinessPostureIdentification = businessPostureIdentification;
             planningBluePrint.MidtermPhaseFormulation = midtermPhaseFormulation;
             planningBluePrint.MidtermStragetyPlanning = midtermStrategyPlanning;
             foreach (var keyOutputId in request.KeyOutputIds)
             {
                 var keyOutputConfig = new KeyOutputConfiguration { Id = keyOutputId };
                 DataContext.KeyOutputConfigs.Attach(keyOutputConfig);
                 planningBluePrint.KeyOutput.Add(keyOutputConfig);
             }
             DataContext.PlanningBlueprints.Add(planningBluePrint);
         }
         else
         {
             var planningBlueprint = DataContext.PlanningBlueprints
                 .Include(x => x.KeyOutput).First(x => x.Id == request.Id);
             planningBlueprint.KeyOutput = new List<KeyOutputConfiguration>();
             foreach (var keyOutputId in request.KeyOutputIds)
             {
                 var keyOutputConfig = DataContext.KeyOutputConfigs.Local.FirstOrDefault(x => x.Id == keyOutputId);
                 if (keyOutputConfig == null)
                 {
                     keyOutputConfig = new KeyOutputConfiguration { Id = keyOutputId };
                     DataContext.KeyOutputConfigs.Attach(keyOutputConfig);
                 }
                 planningBlueprint.KeyOutput.Add(keyOutputConfig);
             }
             request.MapPropertiesToInstance<PlanningBlueprint>(planningBlueprint);
         }
         DataContext.SaveChanges();
         return new SavePlanningBlueprintResponse
         {
             IsSuccess = true,
             Message = "The item has been successfully saved"
         };
     }
     catch
     {
         return new SavePlanningBlueprintResponse
         {
             IsSuccess = false,
             Message = "An error occured, please contact administrator for further information"
         };
     }
 }
Esempio n. 2
0
        public AddStageResponse SaveStage(AddStageRequest request)
        {
            try
            {

                var stage = request.MapTo<MidtermPhaseFormulationStage>();
                var formulation = new MidtermPhaseFormulation { Id = request.MidtermFormulationId };
                DataContext.MidtermPhaseFormulations.Attach(formulation);
                stage.MidtermPhaseFormulation = formulation;
                var interval = stage.EndDate.Value.Year - stage.StartDate.Value.Year + 1;
                var startYear = stage.StartDate.Value.Year;
                var endYear = stage.EndDate.Value.Year;
                if (request.Id != 0)
                {
                    stage = DataContext.MidtermPhaseFormulationStages.Include(x => x.MidtermPhaseFormulation)
                        .Include(x => x.MidtermStrategicPlannings)
                        .First(x => x.Id == request.Id);
                    request.MapPropertiesToInstance<MidtermPhaseFormulationStage>(stage);
                    //delete unnecessary plannings
                    foreach(var plan in stage.MidtermStrategicPlannings.ToList()){
                        if (plan.StartDate < stage.StartDate || plan.EndDate > stage.EndDate) {
                            stage.MidtermStrategicPlannings.Remove(plan);
                        }
                    }
                    //add new strategic plannings
                    for (var i = 0; i < interval; i++)
                    {
                        var planning = new MidtermStrategicPlanning
                        {
                            Title = "Annual Objective Planning",
                            StartDate = i == 0 ? stage.StartDate : new DateTime(startYear + i, 1, 1),
                            EndDate = i == interval - 1 ? stage.EndDate : new DateTime(startYear + i, 12, 1)
                        };
                        if (stage.MidtermStrategicPlannings.FirstOrDefault(x => x.StartDate == planning.StartDate &&
                            x.EndDate == planning.EndDate) == null)
                        {
                            stage.MidtermStrategicPlannings.Add(planning);
                        }
                    }
                }
                else
                {

                    for (var i = 0; i < interval; i++)
                    {
                        var planning = new MidtermStrategicPlanning
                        {
                            Title = "Annual Objective Planning",
                            StartDate = i == 0 ? stage.StartDate : new DateTime(startYear + i, 1, 1),
                            EndDate = i == interval - 1 ? stage.EndDate : new DateTime(startYear + i, 12, 1)
                        };
                        stage.MidtermStrategicPlannings.Add(planning);
                    }
                    DataContext.MidtermPhaseFormulationStages.Add(stage);
                }
                DataContext.SaveChanges();
                return new AddStageResponse
                {
                    IsSuccess = true,
                    Message = "You have been successfully add new stage",
                    Id = stage.Id,
                    Title = stage.Title,
                    Order = stage.Order,
                    Start = request.StartDate.HasValue ? request.StartDate.Value.ToString("MMM yyyy", CultureInfo.InvariantCulture) : "",
                    End = request.EndDate.HasValue? request.EndDate.Value.ToString("MMM yyyy", CultureInfo.InvariantCulture) : ""
                };
            }
            catch {
                return new AddStageResponse
                              {
                                  IsSuccess = false,
                                  Message = "An Error occured, please contact administrator for further information"
                              };
            }
        }