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