public async Task <ActionResult> UpdateCharityInfoImage(Guid id, [FromForm] CharityInfoImageUpdateDto charityDto) { // Check if the donor already exists var charityResponse = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id), true); var imageName = charityDto.Name.ToLower(); if (imageName != "picture" && imageName != "image01" && imageName != "image02") { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O nome da imagem deve ser picture, image01 ou image02"); return(BadRequest(error)); } if (charityResponse == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } if (charityResponse.Information == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"As infomações da entidade beneficente não foram cadastradas."); return(BadRequest(error)); } await CharitableInformationApplication.UpdateCharityInfoImage(id, charityDto, charityResponse.Information, Request); return(Ok()); }
public async Task <ActionResult> UpdateCharityInfo(Guid id, [FromBody] CharityInfoUpdateDto charityDto) { // Check if the donor already exists var charityResponse = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id), true); if (charityResponse == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } if (charityResponse.Information == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"As infomações da entidade beneficente não foram cadastradas."); return(BadRequest(error)); } else if (string.IsNullOrWhiteSpace(charityResponse.Approver) || charityResponse.Status.ToUpper() != ApproverStatus.APPROVED.ToString() || charityResponse.Active == false) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Não foi possível atualizar as informações. A entidade não está ativa ou aprovada."); return(BadRequest(error)); } await CharitableInformationApplication.UpdateCharityInfo(id, charityDto, Request); return(Ok()); }
public async Task <ActionResult> UpdateCharity(Guid id, [FromBody] CharityUpdateDto charityDto, [FromQuery] bool pending_data = false) { // Check if the donor already exists var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id)); if (charity == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } if (!charity.Cnpj.Equals(charityDto.Cnpj)) { // 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)); } } await CharitableEntityApplication.UpdateCharity(id, charityDto, pending_data); return(Ok()); }
public async Task <ActionResult> CreateCharityInfo(Guid id, [FromForm] CharityInfoCreateDto charityDto) { // Check if the donor already exists var charityResponse = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id), true); if (charityResponse == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } if (charityResponse.Information != null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"As informações da entidade beneficente já foram cadastradas."); return(BadRequest(error)); } else { if (charityResponse.Status.ToUpper() != ApproverStatus.APPROVED.ToString() || charityResponse.Active == false) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Não foi possível cadastrar as informações da entidade benefiecente porque a entidade não está ativa ou aprovada."); return(BadRequest(error)); } } await CharitableInformationApplication.CreateCharityInfo(id, charityDto, Request); return(CreatedAtRoute("GetCharityById", new { id }, null));; }
public async Task <ActionResult <PagedResponse <CharityResponseDto> > > GetCharities([FromQuery] FilterCharityParams filterParams, [FromQuery] PaginationParams paginationParams) { PagedResponse <CharityResponseDto> pagedResponse = await CharitableEntityApplication.GetAllCharities((c) => (c.IsActive && c.Status.Equals(ApproverStatus.APPROVED) && c.CharitableInformation != null), filterParams, paginationParams, true); return(Ok(pagedResponse)); }
public async Task <ActionResult <IEnumerable <PendingCharityByStatesDto> > > GetPendingCharities([FromQuery] FilterParams filterParams, [FromQuery] PaginationParams paginationParams) { var pagedResponse = await CharitableEntityApplication.GetCharityPendingByState(); return(Ok(pagedResponse)); }
public async Task <ActionResult <PagedResponse <CharityResponseDto> > > GetCharitiesResticted([FromQuery] FilterCharityParams filterParams, [FromQuery] PaginationParams paginationParams) { PagedResponse <CharityResponseDto> pagedResponse = await CharitableEntityApplication.GetAllCharities((c) => (!c.IsActive && string.IsNullOrWhiteSpace(c.Approver)), filterParams, paginationParams, true); return(Ok(pagedResponse)); }
public CharitiesController(CharitableEntityApplication charitableEntityApplication, CharitableInformationApplication charitableInformationApplication, UserApplication userApplication, ItemApplication itemApplication) { this.CharitableEntityApplication = charitableEntityApplication; this.CharitableInformationApplication = charitableInformationApplication; this.UserApplication = userApplication; this.ItemApplication = itemApplication; }
public async Task <ActionResult> CreateDonationOnline([FromBody] DonationCreateDto donationCreateDto) { if (donationCreateDto == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O parâmetro, DonationCreate, não pode ser nulo."); return(BadRequest(error)); } // Check if charity exists var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(donationCreateDto.CharitableEntityId), true); if (charity == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {donationCreateDto.CharitableEntityId}, não foi encontrada."); return(NotFound(error)); } // Check if user exists var user = await UserApplication.GetUser((u) => u.Id.Equals(donationCreateDto.UserId)); if (user == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O usuário, {donationCreateDto.UserId}, não foi encontrado."); return(NotFound(error)); } if (donationCreateDto?.DonationItem.Count() > 0) { var lstItems = await ItemApplication.GetCharityItemIn(charity.Information.Id, donationCreateDto.DonationItem.Select(e => e.ItemId).ToList()); if (lstItems.Count() != donationCreateDto.DonationItem.Count()) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Existem itens inválidos."); return(BadRequest(error)); } } var donationId = await DonationApplication.CreateDonation(donationCreateDto, true); try { // Sent an email var donor = await UserApplication.GetUserOwnerDto(donationCreateDto.UserId); string message = string.Format(" <h1>Olá, {0}</h1><h2>Doação online realizada com sucesso no valor total de {1} reais para a entidade {2} ({3}).</h2>", donor.Name, donationCreateDto.Total.ToString("C"), charity.Name, charity.Cnpj); await this.EmailSender.SendEmailAsync(user.Login, $"Doa Sonhos - Doação Online", message); } catch (Exception) { } return(CreatedAtRoute("GetDonationById", new { id = donationId }, null)); }
public async Task <ActionResult <CharityResponseDto> > GetCharityRestrictedById(Guid id) { CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true); if (charityDto == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } return(Ok(charityDto)); }
public DonationsController(DonationApplication donationApplication, ItemApplication itemApplication, CharitableEntityApplication charitableEntityApplication, IEmailSender emailSender, UserApplication userApplication) { this.DonationApplication = donationApplication; this.ItemApplication = itemApplication; this.CharitableEntityApplication = charitableEntityApplication; this.UserApplication = userApplication; this.EmailSender = emailSender; }
public async Task <ActionResult <IEnumerable <ApprovalResponseDto> > > GetCharityApproval(Guid id) { CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true); if (charityDto == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } var approvals = await CharitableEntityApplication.GetCharityApprovalResponseDto(a => a.CharitableEntityId.Equals(id)); return(Ok(approvals)); }
public async Task <ActionResult> UpdateCharityStatus(Guid id, CharityStatusRequestDto charityStatusRequestDto) { // Check if the donor already exists var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id)); if (charity == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } await CharitableEntityApplication.UpdateCharityStatus(id, charityStatusRequestDto); return(Ok()); }
public async Task <ActionResult> DeleteCharity(Guid id) { // Check if the donor exists CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id)); if (charityDto == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } await CharitableEntityApplication.DeleteCharity(id); return(NoContent()); }
public async Task <ActionResult <CharityResponseDto> > GetCharityById(Guid id) { CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true); if (charityDto == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } else if (!charityDto.Active || string.IsNullOrWhiteSpace(charityDto.Approver)) { if (charityDto.Status != ApproverStatus.PENDING_DATA.ToString()) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, está inativa."); return(BadRequest(error)); } } return(Ok(charityDto)); }
public async Task <ActionResult> UpdateCharityInfoItem(Guid id, [FromBody] CharityInfoItemDto charityDto) { // Check if the donor already exists var charityResponse = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id), true); if (charityResponse == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } else if (string.IsNullOrWhiteSpace(charityResponse.Approver) || charityResponse.Status.ToUpper() != ApproverStatus.APPROVED.ToString() || charityResponse.Active == false) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Não foi possível atualizar as informações. A entidade não está ativa ou aprovada."); return(BadRequest(error)); } if (charityDto.items != null && charityDto.items.Count > 0) { var distinctItems = charityDto.items.Distinct(); if (distinctItems.Count() != charityDto.items.Count()) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Não é possível inserir itens duplicados."); return(BadRequest(error)); } var lstItems = await ItemApplication.GetItemIn(charityDto.items); if (lstItems.Count() != charityDto.items.Count()) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Existem itens inválidos."); return(BadRequest(error)); } } await CharitableInformationApplication.UpdateCharityInfoItem(id, charityDto); return(Ok()); }
public async Task <ActionResult <CharityStatusResponseDto> > GetCharityStatus([FromQuery] string cnpj, [FromQuery] Guid id) { CharityStatusResponseDto charity = null; if (!string.IsNullOrEmpty(cnpj)) { charity = await CharitableEntityApplication.GetCharityStatus(c => c.Cnpj.Equals(cnpj)); } else if (id != null && id != Guid.Empty) { charity = await CharitableEntityApplication.GetCharityStatus(c => c.Id.Equals(id)); } else { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O cnpj ou id devem ser informados."); return(BadRequest(error)); } return(Ok(charity)); }
public async Task <ActionResult <CharityInfoItemResponseDto> > GetCharityItem(Guid id) { CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true); if (charityDto == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } if (charityDto.Information == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"As informações complementares da entidade beneficente não foram cadastradas."); return(NotFound(error)); } var charityInfoItems = await CharitableInformationApplication.GetCharityInfoItem(p => p.CharitableInformationId == charityDto.Information.Id); return(Ok(charityInfoItems)); }
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)); }
public async Task <ActionResult> ApproveCharity(Guid id, [FromBody] CharityApproveDto charityApproveDto) { // Check if the donor already exists var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id)); if (charity == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } var approvals = await CharitableEntityApplication.GetCharityApprovals(a => a.CharitableEntityId.Equals(id)); object statusObj; Enum.TryParse(typeof(ApproverStatus), charityApproveDto.Status, out statusObj); if (statusObj == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O status '${charityApproveDto.Status}' não é válido."); return(NotFound(error)); } ApproverStatus status = (ApproverStatus)statusObj; if (approvals != null && approvals.OrderByDescending(a => a.Date).First().Status == (int)status) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade já se encontra nesse status '${charityApproveDto.Status}'."); return(NotFound(error)); } await CharitableEntityApplication.UpdateCharityPending(id, charityApproveDto); return(Ok()); }
public async Task <ActionResult> CreateDonationPresencial([FromBody] DonationCreateDto donationCreateDto) { if (donationCreateDto == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O parâmetro, DonationCreate, não pode ser nulo."); return(BadRequest(error)); } // Check if the charity exists var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(donationCreateDto.CharitableEntityId), true); if (charity == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {donationCreateDto.CharitableEntityId}, não foi encontrada."); return(NotFound(error)); } // Check if user exists var user = await UserApplication.GetUser((u) => u.Id.Equals(donationCreateDto.UserId)); if (user == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O usuário, {donationCreateDto.UserId}, não foi encontrado."); return(NotFound(error)); } if (donationCreateDto.Total != 0) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O valor total não pode ser diferente de zero para doações presenciais."); return(BadRequest(error)); } if (donationCreateDto?.DonationItem.Count() > 0) { var lstItems = await ItemApplication.GetCharityItemIn(charity.Information.Id, donationCreateDto.DonationItem.Select(e => e.ItemId).ToList()); if (lstItems.Count() != donationCreateDto.DonationItem.Count()) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Existem itens inválidos."); return(BadRequest(error)); } } else { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"É necessário pelo menos um item válido para doações presenciais."); return(BadRequest(error)); } var donationId = await DonationApplication.CreateDonation(donationCreateDto, false); try { // Sent an email var donor = await UserApplication.GetUserOwnerDto(donationCreateDto.UserId); string message = string.Format(" <h2>Olá, {0}</h2><h3>Parabéns! Você realizou uma doação presencial para a entidade {1} ({2}).</h3>", donor.Name, charity.Name, charity.Cnpj); await this.EmailSender.SendEmailAsync(user.Login, $"Doa Sonhos - Doação Presencial", message); } catch (Exception ex) { Console.WriteLine(ex); } return(CreatedAtRoute("GetDonationById", new { id = donationId }, null)); }