public async Task <IActionResult> CreateNewPayment(PaymentDetailsToCreateEmptyDTO paymentDetailsToCreateEmptyDTO) { var user = await _userRepository.GetUserById(paymentDetailsToCreateEmptyDTO.UserId); var access = await _authRepository.HasAdministrationRights(paymentDetailsToCreateEmptyDTO.UserId); if (!access) { return(BadRequest("User has no proper priviliges")); } var payments = await _repo.GetPayments(paymentDetailsToCreateEmptyDTO.FlatId); if (payments != null && payments.Where(p => p.Type == PaymentType.RENT).Any(p => p.Month == paymentDetailsToCreateEmptyDTO.Period.Month && p.Year == paymentDetailsToCreateEmptyDTO.Period.Year)) { return(BadRequest("Czynsz za ten miesiąc został już wygenerowany")); } var payment = await _repo.CreateNewPayment(paymentDetailsToCreateEmptyDTO); var messageSubject = "Stworzono polecenie płatności"; var messageContent = $"Płatnośc została stworzona przez użytkownika: {user.FirstName} {user.LastName}.\n" + $"W razie zastrzeżeń skontaktuj się z pracownikiem administracji. \n\n" + $"Treść maila wygenerowano automatycznie. Nie odpowiadaj na tego maila."; _mailService.SendMail(messageSubject, messageContent, "", "Home Community App"); //_mapper.Map<UserDto>(user); return(Ok()); }
public async Task <Payment> CreateNewPayment(PaymentDetailsToCreateEmptyDTO paymentDTO) { var flat = await _context.Flats.Include(p => p.Payments).Include(p => p.Residents).FirstOrDefaultAsync(p => p.Id == paymentDTO.FlatId); var payment = new Payment() { Month = paymentDTO.Period.Month, Year = paymentDTO.Period.Year, PaymentDeadline = paymentDTO.Deadline, PaymentType = PaymentType.RENT, Details = new PaymentDetail() { AdministrationDescription = paymentDTO.AdministrationDescription, AdministrationValue = paymentDTO.AdministrationValue, ColdWaterDescription = paymentDTO.ColdWaterDescription, ColdWaterValue = paymentDTO.ColdWaterValue, GarbageDescription = paymentDTO.GarbageDescription, GarbageValue = paymentDTO.GarbageValue, HeatingDescription = paymentDTO.HeatingDescription, HeatingRefundDescription = paymentDTO.HeatingRefundDescription, HeatingRefundValue = paymentDTO.HeatingRefundValue, HeatingValue = paymentDTO.HeatingValue, HotWaterDescription = paymentDTO.HotWaterDescription, HotWaterValue = paymentDTO.HotWaterValue, WaterRefundDescription = paymentDTO.WaterRefundDescription, WaterRefundValue = paymentDTO.WaterRefundValue }, Name = "Czynsz", PaymentStatus = PaymentStatus.WaitingForUser, Value = Math.Round(paymentDTO.AdministrationValue + paymentDTO.GarbageValue + paymentDTO.OperatingCostValue + paymentDTO.ColdWaterValue + paymentDTO.HotWaterValue + paymentDTO.HeatingValue + paymentDTO.HeatingRefundValue + paymentDTO.WaterRefundValue, 2) }; flat.Payments.Add(payment); await _context.SaveChangesAsync(); return(payment); }