public void CalculateModeTest() { // Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); // Act var actual = repository.CalculateMode(invoiceList); // Assert Assert.AreEqual(10M, actual); }
public void CalculateTotalAmountInvoicedTest() { // Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); // Act var actual = repository.CalculateTotalAmountInvoiced(invoiceList); // Assert Assert.AreEqual(1333.14M, actual); }
public void CalculateTotalUnitsSoldTest() { // Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); // Act var actual = repository.CalculateTotalUnitsSold(invoiceList); // Assert Assert.AreEqual(136, actual); }
public void CalculateTotalAmountInvoiced() { //Begin Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); //End Arrange //Begin Act var actual = repository.CalclateTotalAmontInvoiced(invoiceList); //End Act //Begin Assert Assert.AreEqual(588.64, actual); //End Assert }
public void CalculateMedianTest() { //Begin Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); //End Arrange //Begin Act var actual = repository.CalculateMedian(invoiceList); //End Act //Begin Assert Assert.AreEqual(5M, actual); //End Assert }
public void CalculateTotalUnitsSoldTest() { //Begin Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); //End Arrange //Begin Act var actual = repository.CalculateTotalUnitsSold(invoiceList); //End Act //Begin Assert ////NOT A REAL TEST Assert.AreEqual(62, actual); //End Assert }
public InvoiceController(InvoiceRepository invoiceRepository) { _repository = invoiceRepository; }
public InvoiceController(InvoiceRepository repo) { this.repo = repo; }
public void GetInvoiceTotalByIsPaidAndMOnthTest() { //Begin Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); //End Arrange //Begin Act var query = repository.getInvoiceTotalByIsPaidAndMonth(invoiceList); //End Act //Begin Assert //End Assert }
public ChangeInvoiceUseCase(InvoiceRepository repository) { _repository = repository; }
public string Wait(InvoiceWait[] i) { string messenger = "success"; //Model 2 個人發票 if (i[0].Model == 2) { if (i[0].CarrierType == "1") //紙本 { if (i[0].Name != null && i[0].City != null && i[0].County != null && i[0].Email != null && i[0].Address != null) { new InvoiceRepository().WaitCreate(i[0]); } else { messenger = "tableerror"; } } else //手機or自然人 { if (i[0].CarrierID != null && i[0].Email != null) { string s = new InvoiceRepository().InvoiceIDSend("", "0", "", i[0].CarrierType, i[0].CarrierID); if (s == "success") { new InvoiceRepository().WaitCreate(i[0]); } else { messenger = "codeerror"; } } else { messenger = "tableerror"; } } } else if (i[0].Model == 3) //3 統編 { if (i[0].Name != null && i[0].City != null && i[0].County != null && i[0].Email != null && i[0].Address != null && i[0].Buyer_id != null) { int value; if (i[0].Buyer_id.Length == 8 && int.TryParse(i[0].Buyer_id, out value)) { string s = new InvoiceRepository().InvoiceIDSend(i[0].Buyer_id, "0", "", "", ""); if (s == "success") { new InvoiceRepository().WaitCreate(i[0]); } else { messenger = "buyererror"; } } else { messenger = "buyererror"; } } else { messenger = "tableerror"; } } else if (i[0].Model == 1) //1 愛心碼 { if (i[0].LoveKey != null) { string s = new InvoiceRepository().InvoiceIDSend("", "1", i[0].LoveKey, "", ""); if (s == "success") { new InvoiceRepository().WaitCreate(i[0]); } else { messenger = "lovekeyerror"; } } else { messenger = "tableerror"; } } return(messenger); }
public InvoicePaymentProcessor(InvoiceRepository invoiceRepository) { _invoiceRepository = invoiceRepository; }
public InvoiceControllerAPI(InvoiceController invoiceController, InvoiceRepository invoiceRepository) { _InvoiceController = invoiceController; _InvoiceRepository = invoiceRepository; }
public InvoiceController() { Post("/api/v1/invoice/new", _ => { var me = DL.Model.User.User.Find(CurrentRequest.UserId); var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ShouldHaveParameters(new[] { "entity_guid", "entity_type", "amount", "currency_type" }), new ShouldBeCorrectEnumValue("entity_type", typeof(EntityType)), new ShouldBeCorrectEnumValue("currency_type", typeof(CurrencyType)), new EntityShouldExist(), new UserActiveInvoicesLimit(me, InvoiceConfig.UserActiveInvoicesLimit), }, true); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var entityType = (EntityType)GetRequestEnum("entity_type", typeof(EntityType)); var currencyType = (CurrencyType)GetRequestEnum("currency_type", typeof(CurrencyType)); var wallet = CurrencyWalletRepository.FindRandom(currencyType); var invoice = InvoiceRepository.Create( me, EntityUtils.GetEntityId(GetRequestStr("entity_guid"), entityType), entityType, (decimal)Request.Query["amount"], currencyType, InvoiceStatus.Created, wallet ); return(HttpResponse.Item( "invoice", new InvoiceTransformer().Transform(invoice), HttpStatusCode.Created )); }); Get("/api/v1/me/invoice/get", _ => { var me = UserRepository.Find(CurrentRequest.UserId); var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ShouldHaveParameters(new[] { "invoice_guid" }), new ExistsInTable("invoice_guid", "invoices", "guid"), new StringShouldBeSameInDb( "invoice_guid", "invoices", "guid", "user_id", me.id.ToString() ) }, true); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } return(HttpResponse.Item("invoice", new InvoiceTransformer().Transform( InvoiceRepository.FindByGuid(GetRequestStr("invoice_guid")) ))); }); Get("/api/v1/me/invoices/finished", _ => { var me = UserRepository.Find(CurrentRequest.UserId); var invoices = DL.Model.Funding.Invoice.GetForUserByStatuses(me, new [] { InvoiceStatus.Confirmed, InvoiceStatus.Failed, InvoiceStatus.Done }); return(HttpResponse.Item("invoices", new InvoiceTransformer().Many(invoices))); }); Get("/api/v1/me/invoices/active", _ => { var me = UserRepository.Find(CurrentRequest.UserId); var invoices = DL.Model.Funding.Invoice.GetActiveForUser(me, 25); return(HttpResponse.Item("invoices", new InvoiceTransformer().Many(invoices))); }); Patch("/api/v1/me/invoice/status/update", _ => { var me = UserRepository.Find(CurrentRequest.UserId); var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ShouldHaveParameters(new[] { "invoice_guid", "status" }), new ExistsInTable("invoice_guid", "invoices", "guid"), new ShouldBeCorrectEnumValue("status", typeof(InvoiceStatus)), new StringShouldBeSameInDb( "invoice_guid", "invoices", "guid", "user_id", me.id.ToString() ) }, true); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var newStatus = (InvoiceStatus)GetRequestEnum("status", typeof(InvoiceStatus)); var invoice = InvoiceRepository.FindByGuid(GetRequestStr("invoice_guid")); if (invoice.status != InvoiceStatus.Created) { return(HttpResponse.Error(new HttpError(HttpStatusCode.Forbidden, "Cannot update invoice with this status"))); } var availableStatuses = new[] { InvoiceStatus.Failed, InvoiceStatus.RequiresConfirmation }; if (!availableStatuses.Contains(newStatus)) { return(HttpResponse.Error(new HttpError(HttpStatusCode.Forbidden, "This status is not allowed"))); } InvoiceRepository.UpdateStatus(invoice, newStatus); return(HttpResponse.Item("invoice", new InvoiceTransformer().Transform(invoice.Refresh()))); }); }
public InvoiceService(InvoiceRepository invoiceRepository) { _invoiceRepository = invoiceRepository; }
public SimbaToursEastAfricaUnitOfWork( AbstractRepository <Address> addressRepository, AbstractRepository <Destination> destinationRepository, AbstractRepository <Driver> driverRepository, AbstractRepository <HotelBooking> hotelBookingRepository, AbstractRepository <InAndOutBoundAirTravel> inAndOutBoundAirTravelRepository, AbstractRepository <InternalVehicleTravel> internalVehicleTravelRepository, AbstractRepository <Invoice> invoiceRepository, AbstractRepository <Item> itemRepository, AbstractRepository <Itinary> itinaryRepository, AbstractRepository <Laguage> laguageRepository, AbstractRepository <Location> locationRepository, AbstractRepository <Meal> mealRepository, AbstractRepository <Schedule> scheduleRepository, AbstractRepository <TourClient> tourClientRepository, AbstractRepository <Vehicle> vehicleRepository, AbstractRepository <SchedulesPricing> schedulesPricingRepository, AbstractRepository <MealPricing> mealPricingRepository, AbstractRepository <DealsPricing> dealsPricingRepository, AbstractRepository <LaguagePricing> laguagePricingRepository, AbstractRepository <HotelPricing> hotelPricingRepostory, AbstractRepository <Hotel> hotelRepostory, AbstractRepository <TransportPricing> transportPricingRepository, Microsoft.EntityFrameworkCore.DbContext simbaToursEastAfricaDbContext) { SimbaToursEastAfricaDbContext = simbaToursEastAfricaDbContext as SimbaToursEastAfricaDbContext; _addressRepository = addressRepository as AddressRepository; _addressRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _destinationRepository = destinationRepository as DestinationRepository; _destinationRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _driverRepository = driverRepository as DriverRepository; _driverRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _hotelBookingRepository = hotelBookingRepository as HotelBookingRepository; _hotelBookingRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _inAndOutBoundAirTravelRepository = inAndOutBoundAirTravelRepository as InAndOutBoundAirTravelRepository; _inAndOutBoundAirTravelRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _internalVehicleTravelRepository = internalVehicleTravelRepository as InternalVehicleTravelRepository; _internalVehicleTravelRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _invoiceRepository = invoiceRepository as InvoiceRepository; _invoiceRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _itemRepository = itemRepository as ItemRepository; _itemRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _itinaryRepository = itinaryRepository as ItinaryRepository; _itinaryRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _laguageRepository = laguageRepository as LaguageRepository; _laguageRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _locationRepository = locationRepository as LocationRepository; _locationRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _mealRepository = mealRepository as MealRepository; _mealRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _scheduleRepository = scheduleRepository as ScheduleRepository; _scheduleRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _tourClientRepository = tourClientRepository as TourClientRepository; _tourClientRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _vehicleRepository = vehicleRepository as VehicleRepository; _vehicleRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _mealsPricingRepository = mealPricingRepository as MealsPricingRepository; _mealsPricingRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _dealsPricingRepository = dealsPricingRepository as DealsPricingRepository; _dealsPricingRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _laguagePricingRepository = laguagePricingRepository as LaguagePricingRepository; _laguagePricingRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _schedulesPricingRepository = schedulesPricingRepository as SchedulesPricingRepository; _schedulesPricingRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _hotelPricingRepository = hotelPricingRepostory as HotelPricingRepository; _hotelPricingRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _hotelRepository = hotelRepostory as HotelRepository; _hotelRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; _transportPricingRepository = transportPricingRepository as TransportPricingRepository; _transportPricingRepository.SimbaToursEastAfricaDbContext = SimbaToursEastAfricaDbContext; }
public GreenFieldInvoiceController(InvoiceController invoiceController, InvoiceRepository invoiceRepository) { _invoiceController = invoiceController; _invoiceRepository = invoiceRepository; }
public InvoiceController() { _invoiceRepository = new InvoiceRepository(); }
public InvoiceBusiness() { invoiceRepository = new InvoiceRepository(); }
public InvoiceEventSaverService(EventAggregator eventAggregator, InvoiceRepository invoiceRepository) : base( eventAggregator) { _invoiceRepository = invoiceRepository; }
public void EmailConfirmationInvoices(uint[] invoices) { Task.Run(() => { try { using (var db = DB.GetContext()) { SmtpClient smtp = new SmtpClient(GLOB.Settings.Get <string>(3), GLOB.Settings.Get <int>(4)); smtp.EnableSsl = GLOB.Settings.Get <bool>(5); smtp.Credentials = new NetworkCredential(GLOB.Settings.Get <string>(6), GLOB.Settings.Get <string>(7)); float index = 0.0f; foreach (uint invID in invoices) { var invoice = InvoiceRepository.GetInvoice(db, invID); int percent = (int)((index / (float)invoices.Length) * 100.0f); index++; try { var location = LocationRepository.GetLocation(db, invoice.LocationID); if (!location.InvoiceContactID.HasValue) { continue; } RaiseProgress(percent, new ProgressItem(ProgressStatus.OK, string.Format("Emailing confirmation, Confirmation: {0} Contact: {1} Email: {2}", invoice.ReceiverCompany, location.ConfirmationContact.ContactName, location.ConfirmationContact.ContactEmail))); XtraReport rep = this.RenderConfirmation(invoice.InvoiceID); MemoryStream stream = new MemoryStream(); rep.ExportToPdf(stream); MailMessage msg = new MailMessage( GLOB.Settings.Get <string>(8), //From location.ConfirmationContact.ContactEmail, //To GLOB.Company.CompanyName + " - Confirm driver dispatches report (" + DateTime.Now.ToString("MM/dd/yyyy dddd") + ")", //Subject "These are the hours my drivers turned in last week. Please look them over and get back to me, so that payroll can be submitted and your invoice can be prepared. Thank you in advance, and have a great day."); //Body stream.Position = 0; msg.Attachments.Add( new Attachment( stream, invoice.InvoiceNumber + ".pdf", "application/pdf")); smtp.Send(msg); stream.Dispose(); } catch (Exception ex) { RaiseProgress(percent, new ProgressItem(ProgressStatus.Error, ex.Message)); } } RaiseComplete(new ProgressItem(ProgressStatus.OK, "Emailing confirmations complete!")); } } catch (Exception ex) { RaiseComplete(new ProgressItem(ProgressStatus.Error, ex.Message)); } }); }
public CreateInvoiceUseCase(InvoiceRepository repository) { _repository = repository; }
public static Invoice GetInvoice() { return(InvoiceRepository.GetInvoice()); }
public InvoiceService() { invRepo = new InvoiceRepository(); }
public PayjoinReceiverContext(InvoiceRepository invoiceRepository, ExplorerClient explorerClient, PayJoinRepository payJoinRepository) { _invoiceRepository = invoiceRepository; _explorerClient = explorerClient; _payJoinRepository = payJoinRepository; }
public InvoiceService() { _repository = new InvoiceRepository(); }
// constructor // instantiale a new repository object public CartController() { repo = new InvoiceRepository <Invoice>(); }
public ActionResult bluenewRequest(SpGatewayResponse response) { //正式 response.Vi = "PmNER6HP23jikkcC"; response.Key = "382go6Z9UrDy3XBuJnCHzNusEYFnBfls"; //test //response.Key = "CON3KthrvPulsAWQQiQ3jsswLIzxxgQK"; //response.Vi = "ugZbqRhI6x5LGI94"; //test //var success = response.Validate("MS15822085"); //正式 var success = response.Validate("MS3276146654"); if (success) { var tradInfoModel = response.GetResponseModel <TradeInfoModel>(); var resuccess = true; //var OrderNoToProuctId = tradInfoModel.Result.MerchantOrderNo.OrderNoToProuctId(); var wait = new InvoiceRepository().GetWait(tradInfoModel.Result.MerchantOrderNo); var inv = new InvoiceRepository().GetInvoice(wait.id); if (inv != null) { resuccess = false; } if (resuccess) { User_CashReturn user = new MallRepository().GetUserPRecord(tradInfoModel.Result.MerchantOrderNo); Product productModel = new MallRepository().Get((int)user.productId); Order order = new Order { UserId = user.userId, ProductId = productModel.id, Pay = tradInfoModel.Result.PaymentType, Order_No = tradInfoModel.Result.MerchantOrderNo, PayStore = tradInfoModel.Result.PayStore, Barcode_1 = tradInfoModel.Result.Barcode_1, Barcode_2 = tradInfoModel.Result.Barcode_2, Barcode_3 = tradInfoModel.Result.Barcode_3, PayBankCode = tradInfoModel.Result.PayBankCode, CodeNo = tradInfoModel.Result.CodeNo, PayerAccount5Code = tradInfoModel.Result.PayerAccount5Code, inpdate = tradInfoModel.Result.PayTime }; //加入購物記錄 var reutrnorder = new MallRepository().OrderCreate(order); ProductRecord assr = new ProductRecord { UserID = user.userId, unitSn = 1, assets = productModel.transform, inpdate = DateTime.Now, type = 1, ProductId = productModel.id }; new AssetsRepository().AddBearByAssets(assr); var pr = new PreferentialRepository().getPRecordsAll(user.userId).Where(x => x.PreferentialID == 5 && x.productID == productModel.id).FirstOrDefault(); //2倍 /* * if (pr.Count != 0) * { * assr = new ProductRecord * { * UserID = user.userId, * unitSn = 1, * assets = productModel.transform, * inpdate = DateTime.Now, * type = 5, * ProductId = productModel.id * }; * new AssetsRepository().AddBearByAssets(assr); * var prds = new PreferentialRecords * { * id = pr.id, * UserId = user.userId, * Count = 0, * inpdate = DateTime.Now, * PreferentialID = pr.PreferentialID, * productID = pr.productID * }; * new PreferentialRepository().PRecordsUpdate(prds); * }*/ //普通首儲 /*if(pr.Count != 0) * { * assr = new ProductRecord * { * UserID = user.userId, * unitSn = 1, * assets = new PreferentialRepository().getpreferential(1).assets, * inpdate = DateTime.Now, * type = 5, * ProductId = productModel.id * }; * new AssetsRepository().AddBearByAssets(assr); * var prds = new PreferentialRecords { * id = pr.id, * UserId = user.userId, * Count = 0, * inpdate = DateTime.Now, * PreferentialID = 1 * }; * new PreferentialRepository().PRecordsUpdate(prds); * }*/ //InvoiceModel invoice = new InvoiceModel(); //發送發票 var smilePayEinvoice = new InvoiceRepository().invoiceSend(tradInfoModel.Result.MerchantOrderNo, productModel); Invoice invoice = new Invoice { invoiceNumber = smilePayEinvoice.InvoiceNumber, RandomNumber = smilePayEinvoice.RandomNumber, inpdate = DateTime.Parse(smilePayEinvoice.InvoiceDate + " " + smilePayEinvoice.InvoiceTime), IwaitId = wait.id, CarrierID = smilePayEinvoice.CarrierID, orderId = reutrnorder.id }; new InvoiceRepository().InvoiceCreate(invoice); } } return(View()); }
public Repository(OrderContext context) { ProductRepo = new ProductRepository(context); OrderRepo = new OrderRepository(context); InvoiceRepo = new InvoiceRepository(context); }
private async Task MigratedInvoiceTextSearchToDb(int startFromPage) { // deleting legacy DBriize database if present var dbpath = Path.Combine(_datadirs.DataDir, "InvoiceDB"); if (Directory.Exists(dbpath)) { Directory.Delete(dbpath, true); } // migrate data to new table using invoices from database using var ctx = _dbContextFactory.CreateContext(); var invoiceQuery = new InvoiceQuery { IncludeArchived = true }; var totalCount = await _invoiceRepository.GetInvoicesTotal(invoiceQuery); const int PAGE_SIZE = 1000; var totalPages = Math.Ceiling(totalCount * 1.0m / PAGE_SIZE); for (int i = startFromPage; i < totalPages && !CancellationToken.IsCancellationRequested; i++) { invoiceQuery.Skip = i * PAGE_SIZE; invoiceQuery.Take = PAGE_SIZE; var invoices = await _invoiceRepository.GetInvoices(invoiceQuery); foreach (var invoice in invoices) { var textSearch = new List <string>(); // recreating different textSearch.Adds that were previously in DBriize foreach (var paymentMethod in invoice.GetPaymentMethods()) { if (paymentMethod.Network != null) { var paymentDestination = paymentMethod.GetPaymentMethodDetails().GetPaymentDestination(); textSearch.Add(paymentDestination); textSearch.Add(paymentMethod.Calculate().TotalDue.ToString()); } } // textSearch.Add(invoice.Id); textSearch.Add(invoice.InvoiceTime.ToString(CultureInfo.InvariantCulture)); textSearch.Add(invoice.Price.ToString(CultureInfo.InvariantCulture)); textSearch.Add(invoice.Metadata.OrderId); textSearch.Add(InvoiceRepository.ToJsonString(invoice.Metadata, null)); textSearch.Add(invoice.StoreId); textSearch.Add(invoice.Metadata.BuyerEmail); // textSearch.Add(invoice.RefundMail); // TODO: Are there more things to cache? PaymentData? InvoiceRepository.AddToTextSearch(ctx, new InvoiceData { Id = invoice.Id, InvoiceSearchData = new List <InvoiceSearchData>() }, textSearch.ToArray()); } var settings = await _settingsRepository.GetSettingAsync <MigrationSettings>(); if (i + 1 < totalPages) { settings.MigratedInvoiceTextSearchPages = i; } else { // during final pass we set int.MaxValue so migration doesn't run again settings.MigratedInvoiceTextSearchPages = int.MaxValue; } // this call triggers update; we're sure that MigrationSettings is already initialized in db // because of logic executed in MigrationStartupTask.cs _settingsRepository.UpdateSettingInContext(ctx, settings); await ctx.SaveChangesAsync(); } }
public UnitOfWork(DataContext context) { _context = context; CustomerRepository = new CustomerRepository(_context); InvoiceRepository = new InvoiceRepository(_context); }
public async Task <IActionResult> ShopifyInvoiceEndpoint( [FromServices] InvoiceRepository invoiceRepository, [FromServices] InvoiceController invoiceController, [FromServices] IHttpClientFactory httpClientFactory, string storeId, string orderId, decimal amount, bool checkOnly = false) { var invoiceOrderId = $"{ShopifyOrderMarkerHostedService.SHOPIFY_ORDER_ID_PREFIX}{orderId}"; var matchedExistingInvoices = await invoiceRepository.GetInvoices(new InvoiceQuery() { OrderId = new[] { invoiceOrderId }, StoreId = new[] { storeId } }); matchedExistingInvoices = matchedExistingInvoices.Where(entity => entity.GetInternalTags(ShopifyOrderMarkerHostedService.SHOPIFY_ORDER_ID_PREFIX) .Any(s => s == orderId)) .ToArray(); var firstInvoiceStillPending = matchedExistingInvoices.FirstOrDefault(entity => entity.GetInvoiceState().Status == InvoiceStatus.New); if (firstInvoiceStillPending != null) { return(Ok(new { invoiceId = firstInvoiceStillPending.Id, status = firstInvoiceStillPending.Status.ToString().ToLowerInvariant() })); } var firstInvoiceSettled = matchedExistingInvoices.LastOrDefault(entity => new[] { InvoiceStatus.Paid, InvoiceStatus.Complete, InvoiceStatus.Confirmed }.Contains( entity.GetInvoiceState().Status)); var store = await _Repo.FindStore(storeId); var shopify = store?.GetStoreBlob()?.Shopify; ShopifyApiClient client = null; ShopifyOrder order = null; if (shopify?.IntegratedAt.HasValue is true) { client = new ShopifyApiClient(httpClientFactory, shopify.CreateShopifyApiCredentials()); order = await client.GetOrder(orderId); if (string.IsNullOrEmpty(order?.Id)) { return(NotFound()); } } if (firstInvoiceSettled != null) { //if BTCPay was shut down before the tx managed to get registered on shopify, this will fix it on the next UI load in shopify if (client != null && order?.FinancialStatus == "pending" && firstInvoiceSettled.Status != InvoiceStatus.Paid) { await new OrderTransactionRegisterLogic(client).Process(orderId, firstInvoiceSettled.Id, firstInvoiceSettled.Currency, firstInvoiceSettled.Price.ToString(CultureInfo.InvariantCulture), true); order = await client.GetOrder(orderId); } if (order?.FinancialStatus != "pending" && order?.FinancialStatus != "partially_paid") { return(Ok(new { invoiceId = firstInvoiceSettled.Id, status = firstInvoiceSettled.Status.ToString().ToLowerInvariant() })); } } if (checkOnly) { return(Ok()); } if (shopify?.IntegratedAt.HasValue is true) { if (string.IsNullOrEmpty(order?.Id) || !new[] { "pending", "partially_paid" }.Contains(order.FinancialStatus)) { return(NotFound()); } //we create the invoice at due amount provided from order page or full amount if due amount is bigger than order amount var invoice = await invoiceController.CreateInvoiceCoreRaw( new CreateInvoiceRequest() { Amount = amount < order.TotalPrice ? amount : order.TotalPrice, Currency = order.Currency, Metadata = new JObject { ["orderId"] = invoiceOrderId } }, store, Request.GetAbsoluteUri(""), new List <string>() { invoiceOrderId }); return(Ok(new { invoiceId = invoice.Id, status = invoice.Status.ToString().ToLowerInvariant() })); } return(NotFound()); }
public void GetInvoiceTotalByIsPaidAndMonthTest() { // Arrange InvoiceRepository repository = new InvoiceRepository(); var invoiceList = repository.Retrieve(); // Act var query = repository.GetInvoiceTotalByIsPaidAndMonth(invoiceList); // NOT REALLY A TEST }
public void EmailInvoices(uint[] invoices) { Task.Run(() => { try { using (var db = DB.GetContext()) { SmtpClient smtp = new SmtpClient(GLOB.Settings.Get <string>(3), GLOB.Settings.Get <int>(4)); smtp.EnableSsl = GLOB.Settings.Get <bool>(5); smtp.Credentials = new NetworkCredential(GLOB.Settings.Get <string>(9), GLOB.Settings.Get <string>(10)); float index = 0.0f; foreach (uint invID in invoices) { var invoice = InvoiceRepository.GetInvoice(db, invID); int percent = (int)((index / (float)invoices.Length) * 100.0f); index++; try { var location = LocationRepository.GetLocation(db, invoice.LocationID); if (!location.InvoiceContactID.HasValue) { continue; } RaiseProgress(percent, new ProgressItem(ProgressStatus.OK, string.Format("Emailing invoice, Invoice#: {0} Contact: {1} Email: {2}", invoice.InvoiceNumber, location.InvoiceContact.ContactName, location.InvoiceContact.ContactEmail))); XtraReport rep = this.RenderInvoice(invID); MemoryStream stream = new MemoryStream(); rep.ExportToPdf(stream); MailMessage msg = new MailMessage( GLOB.Settings.Get <string>(11), //From location.InvoiceContact.ContactEmail, //To GLOB.Company.CompanyName + " - Invoice #" + invoice.InvoiceNumber, //Subject "Please see the attached invoice."); //Body stream.Position = 0; msg.Attachments.Add( new Attachment( stream, invoice.InvoiceNumber + ".pdf", "application/pdf")); if (location.IncludeConfirmation) { var confRep = this.RenderConfirmation(invoice.InvoiceID); MemoryStream confStream = new MemoryStream(); confRep.ExportToPdf(confStream); confStream.Position = 0; msg.Attachments.Add( new Attachment( confStream, invoice.InvoiceNumber + "-Confirmation.pdf", "application/pdf")); } smtp.Send(msg); stream.Dispose(); } catch (Exception ex) { RaiseProgress(percent, new ProgressItem(ProgressStatus.Error, ex.Message)); } } RaiseComplete(new ProgressItem(ProgressStatus.OK, "Emailing invoices complete!")); } } catch (Exception ex) { RaiseComplete(new ProgressItem(ProgressStatus.Error, ex.Message)); } }); }
public BitpayInvoiceController(UIInvoiceController invoiceController, InvoiceRepository invoiceRepository) { _InvoiceController = invoiceController; _InvoiceRepository = invoiceRepository; }
public static T GetBlob(PayoutProcessorData data) { return(InvoiceRepository.FromBytes <T>(data.Blob)); }
/// <summary> /// The GetInvoicesByClientCode. /// </summary> /// <param name="clientCode">The clientCode<see cref="string"/>.</param> /// <returns>The <see cref="List{Invoice}"/> of invoices .</returns> public static List <Invoice> GetInvoicesByClientCode(string clientCode) => InvoiceRepository.GetInvoicesByClientCode(clientCode);
public CancelInvoiceUseCase(InvoiceRepository repository) { _repository = repository; }