Exemple #1
0
        public CarTypeModel UpdateCarType(CarTypeModel carTypeModel)
        {
            if (carTypeModel.Image != null)
            {
                string extension = Path.GetExtension(carTypeModel.Image.FileName);
                carTypeModel.ImageFileName = Guid.NewGuid() + extension;
                using (FileStream fileStream = File.Create("Uploads/" + carTypeModel.ImageFileName))
                {
                    carTypeModel.Image.CopyTo(fileStream);
                }
                carTypeModel.Image = null;
            }

            CarType carType = DB.CarTypes.SingleOrDefault(p => p.CarTypeId == carTypeModel.CarTypeId);

            carType.Manufacturer    = carTypeModel.Manufacturer;
            carType.Model           = carTypeModel.Model;
            carType.PricePerDay     = carTypeModel.PricePerDay;
            carType.PricePerDayLate = carTypeModel.PricePerDayLate;
            carType.Year            = carTypeModel.Year;
            carType.Gear            = carTypeModel.Gear;
            carType.ImageFileName   = carTypeModel.ImageFileName;


            DB.SaveChanges();
            carTypeModel.CarTypeId = carType.CarTypeId;
            return(carTypeModel);
        }
Exemple #2
0
        //public List<CarTypeModel> UpdateManyCarTypes(List<CarTypeModel> carTypesToUpdate)
        //{
        //    for (int i = 0; i < carTypesToUpdate.Count; i++)
        //    {
        //        carTypesToUpdate[i] = this.UpdateCarType(carTypesToUpdate[i]);
        //    }

        //    return carTypesToUpdate;
        //}

        public List <CarTypeModel> GetAllAvailableCarTypes(RentModel rentModel)
        {
            List <string> unabailableCarsIds = DB.Rents
                                               .Where(rent =>
                                                      (rent.ReturnDate >= rentModel.PickupDate && rent.ReturnDate <= rentModel.ReturnDate) ||
                                                      (rent.PickupDate >= rentModel.PickupDate && rent.PickupDate <= rentModel.ReturnDate) ||
                                                      (rent.PickupDate <= rentModel.PickupDate && rent.ReturnDate >= rentModel.ReturnDate))
                                               .ToList()
                                               .GroupBy(p => p.CarId)
                                               .Select(p => p.First().CarId)
                                               .ToList();

            List <CarType> availableCarTypes = DB.Cars
                                               .Where(p => !unabailableCarsIds.Contains(p.CarId))
                                               .Join(DB.CarTypes, car => car.CarTypeId, carType => carType.CarTypeId, (car, carType) => carType)
                                               .Select(carType => carType)
                                               .Distinct()
                                               .ToList();

            List <CarTypeModel> carTypeModels = new List <CarTypeModel>();

            foreach (var item in availableCarTypes)
            {
                carTypeModels.Add(new CarTypeModel(item));
            }

            List <Car> carsWithNoAvail = new List <Car>();
            bool       carHasNoAvail;

            List <Car> cars = DB.Cars.ToList();

            foreach (var car in cars)
            {
                carHasNoAvail = true;
                foreach (var rent in DB.Rents)
                {
                    if (rent.CarId == car.CarId)
                    {
                        carHasNoAvail = false;
                        break;
                    }
                }
                if (carHasNoAvail == true)
                {
                    carsWithNoAvail.Add(car);
                }
            }
            foreach (var item in carsWithNoAvail)
            {
                CarTypeModel carTypeToCheck = carTypeModels.SingleOrDefault(p => p.CarTypeId == item.CarTypeId);
                if (carTypeToCheck == null)
                {
                    carTypeModels.Add(new CarTypeModel(DB.CarTypes.SingleOrDefault(p => p.CarTypeId == item.CarTypeId)));
                }
            }
            return(carTypeModels);
        }
Exemple #3
0
        public CarTypeModel AddNewCarType(CarTypeModel carTypeModel)
        {
            if (carTypeModel.Image != null)
            {
                string extension = Path.GetExtension(carTypeModel.Image.FileName);

                carTypeModel.ImageFileName = Guid.NewGuid() + extension;

                using (FileStream fileStream = File.Create("Uploads/" + carTypeModel.ImageFileName))
                {
                    carTypeModel.Image.CopyTo(fileStream);
                }
                carTypeModel.Image = null;
            }
            CarType addedCarType = carTypeModel.ConvertToCarType();

            DB.CarTypes.Add(addedCarType);
            DB.SaveChanges();
            carTypeModel.CarTypeId = addedCarType.CarTypeId;
            return(carTypeModel);
        }