Exemplo 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"
         });
     }
 }
 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"
         });
     }
 }