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)));
        }
Example #2
0
        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());
        }
Example #4
0
        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());
        }