Exemple #1
0
        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);
        }
Exemple #2
0
        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());
        }
Exemple #3
0
        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 }));
        }