public async Task <IActionResult> Put(Guid id, [FromBody] MemberApiModel memberApi) { var memberDomain = await _service.UpdateMemberAsync(id, memberApi); MemberApiModel memberResult = _mapper.Map <MemberApiModel>(memberDomain); return(Ok(memberResult)); }
public async Task <IActionResult> Post([FromBody] MemberApiModel memberApi) { var memberDomain = await _service.CreateMemberAsync(memberApi); MemberApiModel memberResult = _mapper.Map <MemberApiModel>(memberDomain); return(Ok(memberResult)); }
public async Task <IActionResult> Get(Guid id) { Member memberDomain = await _service.GetMemberAsync(id); MemberApiModel member = _mapper.Map <MemberApiModel>(memberDomain); return(Ok(member)); }
public async Task <Member> UpdateMemberAsync(Guid id, MemberApiModel memberApi) { try { var validationResult = await _validator.ValidateAsync(memberApi); if (!validationResult.Errors.Any(x => x.Severity == Severity.Error)) { var member = await _memberRepository.GetAsync(id); if (member == null) { throw new EntityNotFoundException("No se ha encontrado el usuario", "NotFound"); } member.Update(memberApi.FirstName, memberApi.LastName, memberApi.Country, memberApi.PhoneNumber, memberApi.PostCode); if (memberApi.Email != member.Email) { var existMemberWithEmail = await _memberRepository.GetByEmailAsync(memberApi.Email); if (existMemberWithEmail != null) { throw new MemberDomainException($"Ya existe un usuario con el email: '{memberApi.Email}'", "ValidationErrors"); } member.UpdateEmail(memberApi.Email); } //Se publican los eventos de dominio en caso por ejemplo, que se quiera notificar al usuario mediante correo o sms que se actualizado la direcciónd e correo electrónico, añadiremos un manejador que haga el envío de la notificación //si quisieramos que este fuese completamente asíncrono, en dicho manejador añadiriamos al bus de servicio o a la cola el envío de dicho mensaje y otro microservicio estaría a //la escucha para realizar el envío await _mediator?.DispatchDomainEventsAsync(member); await _memberRepository.UpdateAsync(member); return(await _memberRepository.GetAsync(memberApi.Id)); } else { throw new MemberDomainException(string.Join(";", validationResult.Errors), "ValidationErrors"); } } catch (Exception ex) { _logger.LogError($"Error al actualizar el usuario: {ex.Message}", ex); throw; } }
public virtual ActionResult EditInfo(MemberApiModel model) { if (ModelState.IsValid) { try { var context = ModelFactory.GetUnitOfWork(); var mRepo = ModelFactory.GetRepository<IMemberRepository>(context); Member m = mRepo.GetMemberFromToken(model.Token); try { model.UpdateMember(m); context.Commit(); } catch (Exception ex) { _Logger.Error("EditInfo", ex); context.Complete(); throw ex; } var newContext = ModelFactory.GetUnitOfWork(); mRepo = ModelFactory.GetRepository<IMemberRepository>(newContext); m = mRepo.GetMemberFromToken(model.Token); return new ObjectResult<AuthJson>(m.GetAuthData()); } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx) { return new ObjectResult<AuthJson>(null, 400, dbEx.GetErrors()); } catch (Exception ex) { return new ObjectResult<AuthJson>(null, 400, ex.Message); } } else { return new ObjectResult<AuthJson>(null, 400, ModelState.GetErrors()); } }
public virtual ActionResult Register(MemberApiModel formData) { if (ModelState.IsValid) { var context = ModelFactory.GetUnitOfWork(); var mRepo = ModelFactory.GetRepository<IMemberRepository>(context); var sendNewAccountMailPass = false; var sendNewAccountMail = false; try { int memberId; var memberData = new MemberMainData { FirstName = formData.FirstName, LastName = formData.LastName, PhoneNumber = formData.PhoneNumber }; if (formData.FacebookId != 0) { memberData.Avatar = this.UploadFile(string.Format(MiscHelpers.FaceBookConstants.FacebookProfilePictureUrlPattern, formData.FacebookId), MiscHelpers.ImageSize.MemberAvatar, Member.AvatarFolder); } if (formData.BirthDate > DateTime.MinValue) { memberData.BirthDate = formData.BirthDate; } if (!string.IsNullOrEmpty(formData.FacebookLink)) { memberData.Facebook = formData.FacebookLink; } if (!string.IsNullOrEmpty(formData.PhoneNumber)) { memberData.PhoneNumber = formData.PhoneNumber; } if (string.IsNullOrEmpty(formData.Password)) { sendNewAccountMailPass = _MembershipService.TryCreateAccount(formData.Email, memberData, out memberId); } else { sendNewAccountMail = _MembershipService.TryCreateAccount(formData.Email, formData.Password, memberData, out memberId); } var member = mRepo.Get(memberId); try { object newMemberMail = null; if (sendNewAccountMailPass) { var urlHelper = new UrlHelper(ControllerContext.RequestContext); var newMemberMailContent = string.Format(Worki.Resources.Email.FacebookRegistration.Content, urlHelper.ActionAbsolute(MVC.Dashboard.Profil.Edit()), member.Email, _MembershipService.GetPassword(member.Email, null)); newMemberMail = _EmailService.PrepareMessageFromDefault(new MailAddress(member.Email, member.MemberMainData.FirstName), Worki.Resources.Email.Activation.ActivationSubject, WebHelper.RenderEmailToString(member.MemberMainData.FirstName, newMemberMailContent)); } if (sendNewAccountMail) { var urlHelper = new UrlHelper(ControllerContext.RequestContext); var newMemberMailContent = string.Format(Worki.Resources.Email.FacebookRegistration.ContentWithoutPass, urlHelper.ActionAbsolute(MVC.Dashboard.Profil.Edit())); newMemberMail = _EmailService.PrepareMessageFromDefault(new MailAddress(member.Email, member.MemberMainData.FirstName), Worki.Resources.Email.Activation.ActivationSubject, WebHelper.RenderEmailToString(member.MemberMainData.FirstName, newMemberMailContent)); } context.Commit(); if (sendNewAccountMail || sendNewAccountMailPass) { _EmailService.Deliver(newMemberMail); } return new ObjectResult<AuthJson>(ModelHelper.GetAuthData(_MembershipService, formData.Email)); } catch (Exception ex) { _Logger.Error(ex.Message); context.Complete(); throw ex; } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx) { return new ObjectResult<AuthJson>(null, 400, dbEx.GetErrors()); } catch (Exception ex) { _Logger.Error("Create", ex); ModelState.AddModelError("", ex.Message); return new ObjectResult<AuthJson>(null, 400, ex.Message); } } else { return new ObjectResult<AuthJson>(null, 400, ModelState.GetErrors()); } }