Пример #1
0
        public IHttpActionResult PostProgram(CoachingProgramDTO dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var currentUser = AppUserManager.FindById(User.Identity.GetUserId());
            var isCoach     = AppUserManager.FindById(dto.CoachId)
                              .GetRoles(AppRoleManager)
                              .Any(i => i == "Coach");

            if (!isCoach)
            {
                ModelState.AddModelError("Coach", "A User that has the Role of Coach Is Required");
                return(BadRequest(ModelState));
            }

            var row = new CoachingProgram
            {
                CreatedAt = DateTime.Now,
                UpdatedAt = DateTime.Now,
                Coach     = AppUserManager.FindById(dto.CoachId),
                Coachee   = AppUserManager.FindById(dto.CoacheeId),
            };

            foreach (var surveyId in dto.SurveyIds)
            {
                var cps = new CoachingProgramSurvey
                {
                    SurveyId        = Convert.ToInt32(surveyId),
                    CoachingProgram = row,
                    CreatedAt       = DateTime.Now,
                    UpdatedAt       = DateTime.Now,
                };
                AppDb.CoachingProgramSurvey.Add(cps);
            }

            AppDb.CoachingPrograms.Add(row);
            AppDb.SaveChanges();
            return(CreatedAtRoute("DefaultApi", new { id = row.Id }, row));
        }
Пример #2
0
        public IHttpActionResult PutProgram(int id, CoachingProgramDTO dto)
        {
            var currentUser = AppUserManager.FindById(User.Identity.GetUserId());

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var isCoach = AppUserManager.FindById(dto.CoachId)
                          .GetRoles(AppRoleManager)
                          .Any(i => i == "Coach");

            if (!isCoach)
            {
                ModelState.AddModelError("Coach", "A User that has the Role of Coach Is Required");
                return(BadRequest(ModelState));
            }

            var coachingProgram = GetCoachingPrograms(currentUser)
                                  .FirstOrDefault(i => i.Id == id);

            if (coachingProgram == null)
            {
                return(BadRequest("Program Not Found"));
            }

            coachingProgram.InvoiceAmount = dto.InvoiceAmount;
            coachingProgram.IsClosed      = dto.IsClosed;
            coachingProgram.CoachId       = dto.CoachId;
            coachingProgram.CoacheeId     = dto.CoacheeId;
            coachingProgram.UpdatedAt     = DateTime.Now;

            if (dto.SurveyIds == null)
            {
                dto.SurveyIds = new List <int>();
            }

            foreach (var survey in coachingProgram.CoachingProgramSurveys.ToList())
            {
                if (!dto.SurveyIds.Any(i => i == survey.SurveyId))
                {
                    AppDb.CoachingProgramSurvey.Remove(survey);
                }
            }

            foreach (var surveyId in dto.SurveyIds)
            {
                if (!coachingProgram.CoachingProgramSurveys.Any(i => i.SurveyId == surveyId))
                {
                    var cps = new CoachingProgramSurvey
                    {
                        SurveyId        = Convert.ToInt32(surveyId),
                        CoachingProgram = coachingProgram,
                        CreatedAt       = DateTime.Now,
                        UpdatedAt       = DateTime.Now,
                    };
                    AppDb.CoachingProgramSurvey.Add(cps);
                }
            }

            try
            {
                AppDb.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CoachingProgramExists(id, currentUser))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }