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