public async Task IfDoublePayment() { Invoice newInvoice = new Invoice() { ShoppingCartID = 2, UserID = 2, CountOfCommodities = 3, CreatedAt = DateTime.Now, Total = 1500 }; Invoice addedInvoice = await _invoicesRepository.Add(newInvoice); AddPaymentDTO addPaymentDTO = new AddPaymentDTO() { InvoiceID = addedInvoice.InvoiceID, PaymentAmount = addedInvoice.Total }; PaymentDTO firstPayment = await _paymentService.MakePayment(addPaymentDTO); PaymentDTO secondPayment = await _paymentService.MakePayment(addPaymentDTO); //На повторную оплату должен вернуть уже существующую по счету Assert.AreEqual(firstPayment.PaymentID, secondPayment.PaymentID); }
public async Task <InvoiceDTO> ByUserID(int userID) { //получаем текущую корзину ShoppingCartDTO cartDTO = await _shoppingCartMsClient.GetShoppingCartByUserID(userID); //если она существует начинаем создание счета if (cartDTO != null && cartDTO.ShoppingCartID > 0 && cartDTO.Items.Count > 0) { Invoice invoiceFromDb = await _invoicesRepository.ByShoppingCartID(cartDTO.ShoppingCartID); if (invoiceFromDb != null) { //если актуальная информация не сходится с информацией в бд то удаляем старый счет и создаем новый иначе возвращаем уже имеющийся счет if (invoiceFromDb.Total != cartDTO.Total || invoiceFromDb.CountOfCommodities != cartDTO.Items.Count) { await _invoicesRepository.DeleteByID(invoiceFromDb.InvoiceID); Invoice newInvoice = CreateInvoiceFromCart(cartDTO); Invoice newInvoiceFromDb = await _invoicesRepository.Add(newInvoice); return(_mapper.Map <InvoiceDTO>(newInvoiceFromDb)); } else { return(_mapper.Map <InvoiceDTO>(invoiceFromDb)); } //если счета по айди корзины в базе нет то создаем новый } else { Invoice newInvoice = CreateInvoiceFromCart(cartDTO); Invoice newInvoiceFromDb = await _invoicesRepository.Add(newInvoice); return(_mapper.Map <InvoiceDTO>(newInvoiceFromDb)); } } return(new InvoiceDTO()); }
public async Task <string> Handle(SubmitInvoiceCommand request, CancellationToken cancellationToken) { InvoiceRequestDTO dto = request.Request; try { dto.ValidateObject("La request no puede ser null"); LocalValidations(dto); } catch (Exception ex) { throw new Exception(ex.Message); } Facilities buyer = new Facilities(); if (dto.BuyerEU.Value == 1) { var res = _facilityService.GetFacilityById(dto.BuyerID); if (res.Result != null) { buyer = res.Result; } else { throw new Exception("No existe este FID europeo"); } } else { var res = _facilityService.GetFacilityByFacility(dto.BuyerName, dto.BuyerCountry, dto.BuyerCity, dto.BuyerAddress, dto.BuyerZipCode); if (res.Result != null) { buyer = res.Result; } else { throw new Exception("No existe este Facility"); } } if (buyer.Id != null) { List <SerialsDB> serials = new List <SerialsDB>(); foreach (var s in dto.Serials) { if (s != "" && s != null && s != "[]") { serials.Add(new SerialsDB { Serial = s }); } } var invoice = new InvoicesDB { Id = Int32.Parse(dto.Id), InvoiceDate = dto.InvoiceDate.DateTime, Price = Convert.ToDouble(dto.Price), Currency = dto.Currency, BuyerId = buyer.Id, BuyerEU = Convert.ToBoolean(dto.BuyerEU.Value) }; try { var added = _invoicesRepository.Add(invoice, serials).Result; return(added.Id.ToString()); } catch (Exception ex) { throw new Exception(ex.Message); } } else { throw new Exception("Error al crer la factura"); } }
public IActionResult AddService(AddServiceViewModel model) { if (ModelState.IsValid) { Car car = _carsrepository.GetCar(model.CarId); Service service = new Service { CarId = model.CarId, ClientId = model.ServiceFacilityId, Milage = model.Milage, Date = model.Date, ServiceType = model.ServiceType, Cost = model.Cost, Id = new Guid() }; MilageRecord record = new MilageRecord { CarId = service.CarId, Date = service.Date, Milage = service.Milage, Id = Guid.NewGuid() }; _milageRecordsRepository.Add(record); Guid fileid = Guid.Empty; if (model.IsInvoiceAdded) { FileHandler fileHandler = new FileHandler(); FileDescription fileDescription = fileHandler.UploadSingleFile(model.File, FileType.Serwis, car.RegistrationNumber, model.Date); _fileDescriptionsRepository.Create(fileDescription); Invoice invoice = new Invoice { Id = Guid.NewGuid(), Number = model.Number, Date = model.Date, Amount = model.Cost, ClientId = model.ServiceFacilityId, InvoiceType = InvoiceType.Koszt, FileDescriptionId = fileDescription.Id }; _invoicesRepository.Add(invoice); service.InvoiceId = invoice.Id; fileid = fileDescription.Id; } car.Milage = model.Milage; car.NextServiceMilage = model.Milage + car.ServiceInterval; _carsrepository.Update(car); _sevicesRepository.Add(service); if (model.IsInvoiceAdded) { ServiceFile serviceFile = new ServiceFile { ServiceId = service.Id, FileDescriptionId = fileid }; _serviceFilesRepository.Add(serviceFile); } return(RedirectToAction("details", "cars", new { id = model.CarId })); } return(RedirectToAction("addservice", "services", new { id = model.CarId })); }