public async Task <int> Create(Member newMember) { if (newMember is null) { throw new ArgumentNullException(nameof(newMember)); } var validator = new MemberValidator(); var validationResult = await validator.ValidateAsync(newMember); if (!validationResult.IsValid) { var errors = validationResult.ToString(", "); throw new InvalidOperationException(errors); } var existedMember = await _membersRepository.Get(newMember.YouTubeUserId); if (existedMember != null) { var updatedMember = _mapper.Map(newMember, existedMember); updatedMember.Id = existedMember.Id; await _membersRepository.Update(updatedMember); return(existedMember.Id); } return(await _membersRepository.Add(newMember)); }
public async Task <int> Create(Member member) { var validator = new MemberValidator(); var validatorResult = await validator.ValidateAsync(member); if (!validatorResult.IsValid) { var errros = validatorResult.ToString(", "); throw new InvalidOperationException(errros); } var exisredMember = await _membersRepository.Get(member.YouTubeAccountId); if (exisredMember is not null) { throw new InvalidOperationException("Member already exists"); } var memberId = await _membersRepository.Add(member); if (memberId != default) { return(memberId); } else { return(default);
public async Task <IActionResult> UpdateMember(JObject objData) { dynamic jsonData = objData; StringBuilder sb = new StringBuilder(); try { JObject identityCard = jsonData.IdentityCard; JObject member = jsonData.Member; var memberM = member.ToObject <Member>(); var validatorm = new MemberValidator(); var resultv = await validatorm.ValidateAsync(memberM); if (resultv != null) { sb.Append(string.Join(",", resultv)); } var identityCardM = identityCard.ToObject <IdentityCard>(); var validatoric = new IdentityCardValidator(); var result = await validatoric.ValidateAsync(identityCardM); if (result != null) { sb.Append(string.Join(",", result)); } if (sb.Length > 0) { return(BadRequest("Errors: " + sb.ToString())); } await _discoRepository.UpdateMember(memberM, identityCardM); return(Ok("Member updated")); } catch (Exception ex) { //log Exception return(BadRequest()); } }
public async Task <MemberDto> Handle(EditMemberCommand request, CancellationToken cancellationToken) { var memberEntity = await _dbContext .Members .SingleOrDefaultAsync(m => m.MemberId == request.MemberId, cancellationToken); if (memberEntity is null) { throw new NullReferenceException($"Member [memberId: {request.MemberId}] not found"); } var memberBeforeChange = memberEntity; var editedMember = request.Member; editedMember.ApplyTo(memberEntity, ModelState); memberEntity.BirthDate = BirthDayDateCalculator.ExtractFromPesel(memberEntity.Pesel); var memberAfterChange = memberEntity; var validator = new MemberValidator(_dbContext, new Tuple <Member, Member>(memberBeforeChange, memberAfterChange)); var validationResult = await validator.ValidateAsync(memberEntity, cancellationToken); if (!validationResult.IsValid) { throw new ValidationException(validationResult.Errors.ToList()); } _ = await _dbContext.SaveChangesAsync(cancellationToken); var patchedMemberEntity = await _dbContext .Members .SingleOrDefaultAsync(m => m.MemberId == request.MemberId, cancellationToken); if (patchedMemberEntity is null) { throw new NullReferenceException($"Failed to fetch patched membership [Id: {request.MemberId}]"); } _editMemberSender.EditMember(patchedMemberEntity); var patchedMemberDto = patchedMemberEntity.Adapt <MemberDto>(); return(patchedMemberDto); }
public async Task <BasicResponse> AddMember(Member member, int institutionId) { var response = new BasicResponse(); var validationResults = await _membervalidator.ValidateAsync(member, options => options.IncludeRuleSets("New Account Validation")); if (validationResults.IsValid) { member.Id = _memberRepository.GetNextKey(); member.InstitutionId = institutionId; await _memberRepository.Insert(member); response.WasSuccessful = true; _eventPublisher.Publish(new MemberCreatedEvent(member)); } return(response); }