コード例 #1
0
 public MessageService(SmsService smsService, TandemBookingContext context, BookingService bookingService, BookingCoordinatorSettings bookingCoordinatorSettings, IMailService mailService)
 {
     _smsService                 = smsService;
     _context                    = context;
     _bookingService             = bookingService;
     _bookingCoordinatorSettings = bookingCoordinatorSettings;
     _mailService                = mailService;
 }
コード例 #2
0
 public BookingController(INexmoService nexmo, TandemBookingContext context, BookingCoordinatorSettings bookingCoordinatorSettings, BookingService bookingService, MessageService messageService, ILogger <BookingController> logger)
 {
     _nexmo   = nexmo;
     _context = context;
     _bookingCoordinatorSettings = bookingCoordinatorSettings;
     _bookingService             = bookingService;
     _messageService             = messageService;
     _logger = logger;
 }
コード例 #3
0
 public static void AddAvailabilityFixture(this TandemBookingContext context, DateTime date,
     params ApplicationUser[] pilots)
 {
     foreach (var pilot in pilots)
         pilot.Availabilities.Add(new PilotAvailability
         {
             Date = date
         });
     context.SaveChanges();
 }
コード例 #4
0
 public BookingAdminController(TandemBookingContext context, INexmoService nexmo, BookingService bookingService,
                               MessageService messageService, BookingCoordinatorSettings bookingCoordinatorSettings,
                               UserManager userManager, ILogger <BookingAdminController> logger)
 {
     _context                    = context;
     _bookingService             = bookingService;
     _messageService             = messageService;
     _bookingCoordinatorSettings = bookingCoordinatorSettings;
     _userManager                = userManager;
     _logger = logger;
     _nexmo  = nexmo;
 }
コード例 #5
0
 private async Task ImportPaymentsVippsFile(TandemBookingContext db, IFileListEntry file)
 {
     if (file.Name.EndsWith(".xml.zip", StringComparison.OrdinalIgnoreCase))
     {
         using (var archive = new ZipArchive(await file.ReadAllAsync(), ZipArchiveMode.Read))
         {
             using (var strm = archive.Entries.First().Open())
             {
                 ImportPaymentsVippsStream(db, strm);
             }
         }
     }
     else
     {
         ErrorMessage += $"File {file.Name} is of unexpected type. ";
     }
 }
コード例 #6
0
        public static Booking AddBookingFixture(this TandemBookingContext context, DateTime date, ApplicationUser pilot, int passengerFee=1700)
        {
            var booking = context.Bookings.Add(new Booking
            {
                AssignedPilot = pilot,
                DateRegistered = new DateTime(2016, 1, 1),
                BookingDate = date,
                Canceled = false,
                PassengerFee = passengerFee,
                BookedPilots = pilot != null 
                    ? new List<BookedPilot> {new BookedPilot {Pilot = pilot}} 
                    : new List<BookedPilot>()
            }).Entity;

            context.SaveChanges();

            return booking;
        }
コード例 #7
0
 public SmsService(INexmoService nexmoService, TandemBookingContext context)
 {
     _nexmoService = nexmoService;
     _context      = context;
 }
コード例 #8
0
 public PilotAvailabilityController(TandemBookingContext context, UserManager userManager)
 {
     _context     = context;
     _userManager = userManager;
 }
コード例 #9
0
 public UserAdminController(TandemBookingContext context, INexmoService nexmo)
 {
     _context = context;
     _nexmo   = nexmo;
 }
コード例 #10
0
 public BookingService(TandemBookingContext context, UserManager userManager, BookingServiceDb bookingServiceDb)
 {
     _context          = context;
     _userManager      = userManager;
     _bookingServiceDb = bookingServiceDb;
 }
コード例 #11
0
 public ReportController(TandemBookingContext context, UserManager userManager)
 {
     _context     = context;
     _userManager = userManager;
 }
コード例 #12
0
 public BookingServiceDb(TandemBookingContext context, UserManager userManager)
 {
     _context     = context;
     _userManager = userManager;
 }
コード例 #13
0
        private void ImportPaymentsVippsStream(TandemBookingContext db, Stream settlementFile)
        {
            var doc = XDocument.Load(settlementFile);

            var ns = doc.Root.GetDefaultNamespace();
            var settlementDetails = doc.Root.Element(ns + "SettlementDetailsInfo");

            //make sure we have a payment account
            var accountRef     = settlementDetails.Element(ns + "SerialNumber").Value;
            var paymentAccount = db.PaymentAccounts.FirstOrDefault(pa => pa.PaymentType == PaymentType.Vipps && pa.ExternalRef == accountRef);

            if (paymentAccount == null)
            {
                var accountName = settlementDetails.Element(ns + "SaleUnitName").Value;
                paymentAccount = new PaymentAccount
                {
                    Active      = true,
                    PaymentType = PaymentType.Vipps,
                    ExternalRef = accountRef,
                    Name        = accountName
                };
                db.PaymentAccounts.Add(paymentAccount);
            }

            var settlementId          = settlementDetails.Descendants(ns + "SettlementID").First().Value;
            var settlementExternalRef = $"{accountRef}-{settlementId}";
            var settlement            = db.VippsSettlements.FirstOrDefault(vs => vs.ExternalRef == settlementExternalRef);

            if (settlement == null)
            {
                settlement = new VippsSettlement
                {
                    ExternalRef    = settlementExternalRef,
                    PaymentAccount = paymentAccount,
                    ImportDate     = DateTime.UtcNow,
                };
                db.VippsSettlements.Add(settlement);
            }
            else
            {
                return;
            }

            var transactionElems = settlementDetails.Descendants(ns + "TransactionInfo");
            var count            = 0;

            foreach (var txElem in transactionElems)
            {
                var externalRef = txElem.Element(ns + "TransactionID").Value;
                if (!db.Payments.Any(p => p.PaymentType == PaymentType.Vipps && p.ExternalRef == externalRef))
                {
                    var paymentDate   = DateTimeOffset.Parse(txElem.Element(ns + "TransactionTime").Value, CultureInfo.InvariantCulture);
                    var paymentAmount = decimal.Parse(txElem.Element(ns + "TransactionGrossAmount").Value, CultureInfo.InvariantCulture);
                    var paymentFee    = decimal.Parse(txElem.Element(ns + "TransactionFeeAmount").Value, CultureInfo.InvariantCulture);

                    var payment = new Payment
                    {
                        PaymentType        = PaymentType.Vipps,
                        ExternalRef        = externalRef,
                        Amount             = paymentAmount,
                        UnreconciledAmount = paymentAmount,
                        Fee            = paymentFee,
                        PaymentDate    = paymentDate,
                        InsertDate     = DateTimeOffset.Now,
                        PaymentAccount = paymentAccount,
                    };
                    db.Payments.Add(payment);
                    count++;
                }
            }
        }
コード例 #14
0
 public PilotsFixture(TandemBookingContext context)
 {
     _context = context;
     AddPilotsFixture();
 }
コード例 #15
0
 public AvailabilityOverviewController(TandemBookingContext context)
 {
     _context = context;
 }
コード例 #16
0
 public OverviewController(TandemBookingContext context, UserManager userManager)
 {
     _context     = context;
     _userManager = userManager;
 }