public static RezervationModel ToModel(this Rezervation dbRezervation, ClientAccountModel clientAccountModel) { var model = dbRezervation.ToModel(); model.ClientAccount = clientAccountModel; return(model); }
/// <summary> /// Creates a booking for the client account. /// </summary> /// <param name="parameters">Rezervation creation parameters. Hold information on the client account and the rezervation.</param> /// <returns></returns> public RezervationModel CreateBooking(RezervationCreationParameters parameters) { this.ValidateBookingParameters(parameters); //try to get a client account first var clientAccount = this.dbContext.ClientAccounts.SingleOrDefault(x => x.ClientId == parameters.ClientId)?.ToModel(); if (clientAccount == null && parameters.ClientAccount != null) { clientAccount = this.clientAccountService.Add(parameters.ClientAccount); } else if (parameters.ClientAccount == null && clientAccount == null) { throw new NotFoundException("Client account not found."); } var dbRezervation = new Rezervation() { ClientId = clientAccount.ClientId, CarPlateNumber = parameters.CarPlateNumber, PickUpDate = parameters.PickUpDate, ReturnDate = parameters.ReturnDate, }; //get the car type var carType = CarTypes.GetCarType(parameters.CarType); dbRezervation.CarType = (int)carType.Type; dbRezervation.RentaltFee = carType.GetRentalFee(parameters.PickUpDate, parameters.ReturnDate); dbRezervation.DepositFee = carType.GetDepositFee(dbRezervation.RentaltFee); this.dbContext.Rezervations.Add(dbRezervation); this.dbContext.SaveChanges(); return(dbRezervation.ToModel(clientAccount)); }