public async Task <Guid> CreateDonation(DonationCreateDto donationDto, bool completed = false) { var donation = this.Mapper.Map <Donation>(donationDto); donation.Id = Guid.NewGuid(); donation.Date = DateTime.Now.ToBrazilianTimeZone(); donation.Completed = completed; donation.Canceled = false; await this.DonationRepository.AddAsync(donation); if (donationDto.DonationItem != null && donationDto.DonationItem.Count() > 0) { foreach (var donateItem in donationDto.DonationItem) { var item = await this.ItemRepository.GetByIdAsync(donateItem.ItemId); if (item != null) { await this.DonationItemRepository.AddAsync(new DonationItem() { DonationId = donation.Id, ItemId = item.Id, Name = item.Name, Price = item.Price, Quantity = donateItem.ItemQuantity }); } } } await this.DonationRepository.SaveAsync(); return(donation.Id); }
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 IActionResult Post([FromBody] DonationCreateDto donation) { if (!ModelState.IsValid) { return(BadRequest()); } var donationEntity = _mapper.Map <Donation>(donation); _donationRepository.Create(donationEntity); if (!_donationRepository.Save()) { return(StatusCode(500, "An error occured while processing your request")); } var donationCreated = _mapper.Map <DonationDto>(donationEntity); return(CreatedAtAction("Post", new { id = donationEntity.ID }, donationCreated)); }
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)); }