public IHttpActionResult Post(CertificatePostViewModel crudViewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var currentUserId = GetUserAndOrganization().UserId; var isAdministrator = _permissionService.UserHasPermission(GetUserAndOrganization(), AdministrationPermissions.Certificate); if (!isAdministrator && crudViewModel.ApplicationUserId != currentUserId) { return(BadRequest()); } var certificate = _certificateRepository.Get(c => c.Name == crudViewModel.Name && c.ApplicationUserId == crudViewModel.ApplicationUserId, includeProperties: "Exams").FirstOrDefault(); if (certificate == null) { certificate = _mapper.Map <Certificate>(crudViewModel); certificate.Exams = MapExams(crudViewModel); _certificateRepository.Insert(certificate); } else { certificate.InProgress = crudViewModel.InProgress; var examsToAdd = MapExams(crudViewModel); examsToAdd.ForEach(e => certificate.Exams.Add(e)); _certificateRepository.Update(certificate); } _unitOfWork.Save(); return(Ok(_mapper.Map <CertificateMiniViewModel>(certificate))); }
public async Task <IHttpActionResult> Put(CertificatePostViewModel crudViewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var currentUserId = GetUserAndOrganization().UserId; var isAdministrator = await _permissionService.UserHasPermissionAsync(GetUserAndOrganization(), AdministrationPermissions.Certificate); if (!isAdministrator && crudViewModel.ApplicationUserId != currentUserId) { return(BadRequest()); } var certificate = await _certificateRepository.Get(c => c.Id == crudViewModel.Id, includeProperties : "Exams").FirstOrDefaultAsync(); if (certificate == null) { return(NotFound()); } certificate.Exams = await MapExamsAsync(crudViewModel); certificate.InProgress = crudViewModel.InProgress; _certificateRepository.Update(certificate); await _unitOfWork.SaveAsync(); return(Ok(_mapper.Map <CertificateMiniViewModel>(certificate))); }
private ICollection <Exam> MapExams(CertificatePostViewModel crudViewModel) { var examIds = _mapper.Map <int[]>(crudViewModel.Exams); return(_examRepository.Get(e => examIds.Contains(e.Id)).ToList()); }
private async Task <ICollection <Exam> > MapExamsAsync(CertificatePostViewModel crudViewModel) { var examIds = _mapper.Map <int[]>(crudViewModel.Exams); return(await _examRepository.Get(e => examIds.Contains(e.Id)).ToListAsync()); }