public async Task <IActionResult> Edit(string id, CertificateEditInputModel certificateEditInputModel)
        {
            if (id != certificateEditInputModel.Id)
            {
                return(this.BadRequest());
            }

            if (!this.ModelState.IsValid)
            {
                this.ViewData["Activities"] = await this.GetAllWorkoutActivitiesAsSelectListItems();

                return(this.View(certificateEditInputModel));
            }

            var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value;

            await this.certificatesService.UpdateAsync(certificateEditInputModel, userId);

            return(this.RedirectToAction(nameof(this.All)));
        }
        public async Task <ActionResult <CertificateExportModel> > Put(int id, [FromForm] CertificateEditInputModel input)
        {
            if (id != input.Id)
            {
                return(this.BadRequest());
            }

            var model = await this.certificatesService.GetByIdAsync <CertificateExportModel>(id);

            if (model == null)
            {
                return(this.NotFound());
            }

            // var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value;
            var user = await this.userManager.GetUserAsync(this.User);

            await this.certificatesService.EditAsync(input, user.Id);

            return(this.NoContent());
        }
Beispiel #3
0
        public async Task <int> EditAsync(CertificateEditInputModel input, string userId)
        {
            var entity = await this.certificatesRepository
                         .All()
                         .FirstOrDefaultAsync(x => x.Id == input.Id);

            // entity.Title = input.Title.Trim();
            // entity.Author = input.Author.Trim();
            // entity.Details = input.Details.Trim();
            // entity.PublishDate = input.PublishDate;
            // entity.ExternalPostUrl = input.ExternalPostUrl;
            // entity.UserId = userId;
            // entity.Categories = null;
            // entity.Likes = input.Likes;
            PropertyInfo[] properties = entity.GetType().GetProperties(BindingFlags.Static | BindingFlags.Instance |
                                                                       BindingFlags.Public | BindingFlags.NonPublic);

            // Stream fileStream = await this.UploadFileAsync(input, imageFilesDirectory, entity);
            await this.certificatesRepository.SaveChangesAsync();

            return(entity.Id);
        }
        public async Task UpdateAsync(CertificateEditInputModel certificateEditInputModel, string userId)
        {
            var certificate = await this.certificatesRepository.All()
                              .FirstOrDefaultAsync(x => x.Id == certificateEditInputModel.Id);

            if (certificate == null)
            {
                throw new NullReferenceException(string.Format(ServiceConstants.Certificate.NullReferenceCertificateId, certificateEditInputModel.Id));
            }

            var issuedToUserId = await this.certificatesRepository.All()
                                 .Where(cid => cid.Id == certificateEditInputModel.Id)
                                 .Select(x => x.TrainConnectedUserId)
                                 .FirstOrDefaultAsync();

            if (issuedToUserId != userId)
            {
                throw new ArgumentException(string.Format(ServiceConstants.Certificate.ArgumentUserIdMismatch, userId));
            }

            var workoutActivity = await this.workoutActivityRepository.All()
                                  .FirstOrDefaultAsync(x => x.Name == certificateEditInputModel.ActivityName);

            if (workoutActivity == null)
            {
                throw new NullReferenceException(string.Format(ServiceConstants.Certificate.NullReferenceWorkoutActivityName, certificateEditInputModel.ActivityName));
            }

            certificate.ActivityId  = workoutActivity.Id;
            certificate.Activity    = workoutActivity;
            certificate.IssuedBy    = certificateEditInputModel.IssuedBy;
            certificate.IssuedOn    = certificateEditInputModel.IssuedOn;
            certificate.ExpiresOn   = certificateEditInputModel.ExpiresOn;
            certificate.Description = certificateEditInputModel.Description;

            this.certificatesRepository.Update(certificate);
            await this.certificatesRepository.SaveChangesAsync();
        }