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); }
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)); }