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); }
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); }
private int CalculateBookingPeriodInDays(SingleItemView vm) { var bookingPeriod = vm.BookingEndDay.Subtract(vm.BookingStartDay).Days; return(bookingPeriod); }
private decimal CalculateBookingWithoutVat(SingleItemView vm) { return(CalculateBookingPeriodInDays(vm) * CalculatePricePerDay(vm)); }