Exemplo n.º 1
0
        public async Task <IActionResult> StageAddPost(AddStageRequest request)
        {
            try
            {
                await gameService.AddStage(request.GameID, request.StageID, request.Name);

                return(RedirectToAction("Home", new { request.GameID }));
            }
            catch (Exception exception)
            {
                return(GetExceptionResult(exception, request));
            }
        }
 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"
         });
     }
 }