Beispiel #1
0
        public BookingBLL CreateBooking(Guid userId, SingleItemView vm)
        {
            var booking = new BookingBLL()
            {
                AppUserId         = userId,
                BookingNumber     = GetBookingNumber(),
                BookingDate       = DateTime.Now,
                BookingStartDay   = vm.BookingStartDay,
                BookingEndDay     = vm.BookingEndDay,
                BookingPeriodDays = CalculateBookingPeriodInDays(vm),
                PricePerDay       = CalculatePricePerDay(vm),
                VatPercent        = 0,
                Vat = 0,
                BookingWithoutVat  = CalculateBookingWithoutVat(vm),
                BookingTotal       = 0,
                ItemId             = vm.Id,
                ItemOwnerId        = vm.AppUserId,
                RenterId           = userId,
                ItemOwnerCompanyId = vm.ItemOwnerCompanyId,
                RenterCompanyId    = vm.CompanyId,
            };

            // Arvutan VAT percent-i, kui ItemOwner on Company, siis küsin andmebaasist company ja kui tal KM number, siis 20%.
            if (booking.ItemOwnerCompanyId != null)
            {
                if (vm.HasVatNumber)
                {
                    booking.VatPercent = VatPercent;
                }
            }
            // Calculate VAT
            booking.Vat          = CalculateVat(booking.BookingWithoutVat, booking.VatPercent);
            booking.BookingTotal = booking.Vat + booking.BookingWithoutVat;
            return(booking);
        }
Beispiel #2
0
        private decimal CalculatePricePerDay(SingleItemView vm)
        {
            var bookingPeriod = CalculateBookingPeriodInDays(vm);

            if (bookingPeriod >= 1 && bookingPeriod < 7)
            {
                return(vm.PricePerDay);
            }

            if (bookingPeriod >= 7 && bookingPeriod < 30)
            {
                return(vm.PricePerWeek / 7);
            }

            return(vm.PricePerMonth / 30);
        }
Beispiel #3
0
        private int CalculateBookingPeriodInDays(SingleItemView vm)
        {
            var bookingPeriod = vm.BookingEndDay.Subtract(vm.BookingStartDay).Days;

            return(bookingPeriod);
        }
Beispiel #4
0
 private decimal CalculateBookingWithoutVat(SingleItemView vm)
 {
     return(CalculateBookingPeriodInDays(vm) * CalculatePricePerDay(vm));
 }