public FleetVehicleModel UpdateCarOnFleet(FleetVehicleModel fleet)
        {
            FleetVehicle fleetVehicle = DB.FleetVehicles.SingleOrDefault(f => f.Id == fleet.ID);

            if (fleetVehicle == null)
            {
                return(null);
            }

            fleetVehicle.Vin          = fleet.Vin;
            fleetVehicle.ModelId      = fleet.ModelID;
            fleetVehicle.Color        = fleet.Color;
            fleetVehicle.PurchaseDate = fleet.PurchaseDate;
            fleetVehicle.CarYear      = fleet.CarYear;
            fleetVehicle.Mileage      = fleet.Mileage;
            fleetVehicle.CarImg       = fleet.CarImg;
            fleetVehicle.Gearbox      = fleet.Gearbox;
            fleetVehicle.ToUsed       = fleet.ToUsed;
            fleetVehicle.CarFixed     = fleet.CarFixed;
            fleetVehicle.BranchId     = fleet.BranchID;


            DB.SaveChanges();

            return(fleet);
        }
        public FleetVehicleModel GetOneCarFromFleet(int id)
        {
            FleetVehicleModel fleetVehicleModel = DB.FleetVehicles.Where(FV => FV.Id == id).Select(FV => new FleetVehicleModel(FV)).SingleOrDefault();

            fleetVehicleModel.CarModel = GetCarModel(fleetVehicleModel.ModelID);
            fleetVehicleModel.Branch   = GetRentalBranch(fleetVehicleModel.BranchID);

            return(fleetVehicleModel);
        }
        public IActionResult AddCarModel([FromForm] FleetVehicleModel fleetVehicleModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ErrorHelper.ExtractErrors(ModelState)));
                }

                FleetVehicleModel addedCar = FleetVehiclesLogic.AddCarToFleet(fleetVehicleModel);
                return(Created("api/fleet-vehicles/" + addedCar.ID, addedCar));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ErrorHelper.GetExceptionMessage(ex)));
            }
        }
        public IActionResult GetOneCarFromFleet(int id)
        {
            try
            {
                FleetVehicleModel fleetVehicleModel = FleetVehiclesLogic.GetOneCarFromFleet(id);
                if (fleetVehicleModel == null)
                {
                    return(NotFound($"id {id} not found"));
                }

                return(Ok(fleetVehicleModel));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ErrorHelper.GetExceptionMessage(ex)));
            }
        }
        public FleetVehicleModel AddCarToFleet(FleetVehicleModel fleetVehicleModel)
        {
            string extension = Path.GetExtension(fleetVehicleModel.CarImg);

            fleetVehicleModel.CarImg = Guid.NewGuid() + extension;
            using (FileStream fileStream = File.Create("Uploads/" + fleetVehicleModel.CarImg))
            {
                fleetVehicleModel.Image.CopyTo(fileStream);
            }
            fleetVehicleModel.Image = null;

            FleetVehicle fleetVehicle = fleetVehicleModel.ConvertToCar();

            DB.FleetVehicles.Add(fleetVehicle);
            DB.SaveChanges();

            fleetVehicleModel.ID = fleetVehicle.Id;
            return(fleetVehicleModel);
        }
        public IActionResult UpateCarOnFleet([FromRoute] int id, [FromBody] FleetVehicleModel carFromFleet)
        {
            try
            {
                carFromFleet.ID = id;
                FleetVehicleModel updatedCar = FleetVehiclesLogic.UpdateCarOnFleet(carFromFleet);

                if (updatedCar == null)
                {
                    return(NotFound($"id {id} not found"));
                }

                return(Ok(updatedCar));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ErrorHelper.GetExceptionMessage(ex)));
            }
        }