Ejemplo n.º 1
0
        public async Task <IActionResult> Create(Lease lease)
        {
            ViewBag.CarId  = new SelectList(contex.Cars.OrderBy(x => x.Id), "Id", "Id");
            ViewBag.UserId = new SelectList(contex.Users.OrderBy(x => x.Id), "Id", "UserName");

            if (ModelState.IsValid)
            {
                var user = await contex.Users.FirstOrDefaultAsync(x => x.Id == lease.UserUserName);

                var car = await contex.Cars.FirstOrDefaultAsync(x => x.Id == lease.CarId);

                if (lease.StartDate > lease.EndDate)
                {
                    ModelState.AddModelError("", "The lease End Date has to be larger than Start date");
                    return(View(lease));
                }

                lease.CarBrand     = car.Brand;
                lease.CarColor     = car.Color;
                lease.CarRentPrice = car.RentPrice;
                lease.UserId       = user.Id;
                lease.UserUserName = user.UserName;
                lease.UserName     = user.Name;
                lease.Payment      = "Pending";

                contex.Add(lease);
                await contex.SaveChangesAsync();

                TempData["Success"] = "The lease has been created!";

                return(RedirectToAction("Index"));
            }

            return(View(lease));
        }
Ejemplo n.º 2
0
        [ValidateAntiForgeryToken] //protect against CSRF attacks
        public async Task <IActionResult> Create(Car car)
        {
            if (ModelState.IsValid)
            {
                var carId = await contex.Cars.FirstOrDefaultAsync(x => x.Id == car.Id);

                if (carId != null)
                {
                    ModelState.AddModelError("", "The Car already exists.");
                    return(View(car));
                }

                string imageName = "noimagecar.png";
                if (car.ImageUpload != null)
                {
                    string uploadsDir = Path.Combine(webHostEnvironment.WebRootPath, "media/cars");
                    imageName = Guid.NewGuid().ToString() + "_" + car.ImageUpload.FileName;
                    string     filePath = Path.Combine(uploadsDir, imageName);
                    FileStream fs       = new FileStream(filePath, FileMode.Create);
                    await car.ImageUpload.CopyToAsync(fs);

                    fs.Close();
                }
                car.Image = imageName;

                contex.Add(car);
                await contex.SaveChangesAsync();

                TempData["Success"] = "The car has been added!";

                return(RedirectToAction("Index"));
            }

            return(View(car));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Create(Lease lease)
        {
            ViewBag.CarId  = new SelectList(contex.Cars.OrderBy(x => x.Id), "Id", "Id");
            ViewBag.UserId = new SelectList(contex.Users.OrderBy(x => x.Id), "Id", "UserName");

            if (ModelState.IsValid)
            {
                var user = await contex.Users.FirstOrDefaultAsync(x => x.Id == lease.UserUserName);

                var car = await contex.Cars.FirstOrDefaultAsync(x => x.Id == lease.CarId);

                if (lease.StartDate > lease.EndDate)
                {
                    ModelState.AddModelError("", "The lease End Date has to be larger than Start date");
                    return(View(lease));
                }
                if (lease.StartDate == lease.EndDate)
                {
                    ModelState.AddModelError("", "Minimum lease time is 1 day");
                    return(View(lease));
                }

                var leasesCount = contex.Leases.Where(x => x.CarId == lease.CarId && x.EndDate >= lease.StartDate && x.StartDate <= lease.EndDate);

                if (leasesCount.Count() > 0)
                {
                    var leaseLast = await contex.Leases.Where(x => x.CarId == lease.CarId).MaxAsync(x => x.EndDate);

                    ModelState.AddModelError("", $"{car.Brand} is already booked in that period. Next free booking slot is avaiable on: {leaseLast.Date.AddDays(1):dd-MM-yyyy}");
                    return(View(lease));
                }

                lease.CarBrand     = car.Brand;
                lease.CarColor     = car.Color;
                lease.CarRentPrice = car.RentPrice;
                lease.UserId       = user.Id;
                lease.UserUserName = user.UserName;
                lease.UserName     = user.Name;
                lease.Payment      = "Pending";

                contex.Add(lease);
                await contex.SaveChangesAsync();

                TempData["Success"] = "The lease has been created!";

                return(RedirectToAction("Index"));
            }

            return(View(lease));
        }