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