public async Task <Guid> CreateCharity(CharityCreateDto charityDto)
        {
            User user = new User(Guid.NewGuid(), charityDto.Login.ToLower(), charityDto.Password.ToSHA512(),
                                 LoginType.CHARITABLE_ENTITY, Guid.NewGuid(), true);

            var charitable = this.Mapper.Map <CharitableEntity>(charityDto);

            charitable.Status       = ApproverStatus.PENDING;
            charitable.IsActive     = false;
            charitable.ApproverData = null;
            charitable.Approver     = string.Empty;
            charitable.Id           = Guid.NewGuid();
            charitable.UserId       = user.Id;

            var approval = new Approval()
            {
                Id = Guid.NewGuid(),
                CharitableEntityId = charitable.Id,
                Date    = DateTime.UtcNow.ToBrazilianTimeZone(),
                Message = "Análise Pendente",
                Status  = (int)ApproverStatus.PENDING
            };

            var lstRole = await RoleRepository.GetWhereAsync(r => r.Name.ToLower().Equals("charitable_entity"));

            if (!lstRole.Any())
            {
                throw new Exception("Cannot find role charitable_entity");
            }

            await UserRoleRepository.AddAsync(new UserRole()
            {
                User = user, RoleId = lstRole.First().Id
            });

            await this.Repository.AddAsync(charitable);

            await ApprovalRepository.AddAsync(approval);

            await this.Repository.SaveAsync();

            return(charitable.Id);
        }
Пример #2
0
        public async Task <IActionResult> CreateCharity([FromBody] CharityCreateDto charityDto)
        {
            var userDto = await UserApplication.GetUserDto(u => u.Login.ToLower().Equals(charityDto.Login.ToLower()));

            if (userDto != null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O usuário, {charityDto.Login}, já existe.");
                return(BadRequest(error));
            }

            // Check if the charity entity already exists
            bool hasCharity = await CharitableEntityApplication.ExistCharity((c) => c.Cnpj.Equals(charityDto.Cnpj));

            if (hasCharity)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {charityDto.Cnpj}, já existe.");
                return(BadRequest(error));
            }

            var charityId = await CharitableEntityApplication.CreateCharity(charityDto);

            return(CreatedAtRoute("GetCharityById", new { id = charityId }, null));
        }