public ActionResult Create([Bind(Include = "BookingId,userId,PickUpDate,ReturnDate,Percentage,BasicPrice,price,ReturnId,Booking_Cost,status,CarId,MilageIn,MilageOut")] CarHiring carHiring)
        {
            var userName = User.Identity.GetUserName();

            carHiring.userId = userName;
            var customers = db.Customers.Where(p => p.Email == userName).FirstOrDefault();
            var millage   = db.Cars.Where(x => x.CarId == carHiring.CarId).FirstOrDefault();

            if (ModelState.IsValid)
            {
                carHiring.CustomerName    = customers.FirstName;
                carHiring.CustomerSurname = customers.LastName;
                carHiring.MilageOut       = millage.CurrentMilage;
                carHiring.numOfDays       = Convert.ToInt32(logic.CalcNum_of_Days(carHiring));
                carHiring.BasicPrice      = logic.calcBasicCharge(carHiring);
                carHiring.Deposit         = carHiring.calcDeposite();
                carHiring.Percentage      = logic.calcPercentage(carHiring);
                db.CarHirings.Add(carHiring);
                db.SaveChanges();
                return(RedirectToAction("ConfrimHire", "CarHirings", new { id = carHiring.BookingId }));
            }

            ViewBag.CarId = new SelectList(db.Cars, "CarId", "Description", carHiring.CarId);
            return(View(carHiring));
        }
Example #2
0
        public decimal CalcNum_of_Days(CarHiring carHiring)
        {
            TimeSpan difference = carHiring.ReturnDate.Subtract(carHiring.PickUpDate);
            var      Days       = difference.TotalDays;

            return(Convert.ToDecimal(Days));
        }
        public ActionResult ReturnVehicle(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CarHiring carHiring = db.CarHirings.Find(id);

            ViewBag.pick            = carHiring.PickUpDate.Date;
            ViewBag.retur           = carHiring.ReturnDate.Date;
            ViewBag.userID          = carHiring.userId;
            ViewBag.status          = carHiring.status;
            ViewBag.bookID          = carHiring.BookingId;
            ViewBag.Deposit         = carHiring.Deposit;
            ViewBag.BasicPrice      = carHiring.BasicPrice;
            ViewBag.numOfDays       = carHiring.numOfDays;
            ViewBag.Percentage      = carHiring.Percentage;
            ViewBag.CustomerName    = carHiring.CustomerName;
            ViewBag.CustomerSurname = carHiring.CustomerSurname;

            if (carHiring == null)
            {
                return(HttpNotFound());
            }
            ViewBag.CarId = new SelectList(db.Cars, "CarId", "Description", carHiring.CarId);
            return(View(carHiring));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            CarHiring carHiring = db.CarHirings.Find(id);

            db.CarHirings.Remove(carHiring);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult ConfirmCollection(int?id)
        {
            CarHiring carHiring = db.CarHirings.Find(id);

            carHiring.status          = "Picked Up";
            db.Entry(carHiring).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Example #6
0
 public decimal calcExtraKMCost(CarHiring carHiring)
 {
     if (calcUsedKM(carHiring.CarId, carHiring.MilageIn) > calcFreeKM(carHiring))
     {
         return((calcUsedKM(carHiring.CarId, carHiring.MilageIn) - calcFreeKM(carHiring)) * GetKiloRate(carHiring.CarId));
     }
     else
     {
         return(0);
     }
 }
 public ActionResult Edit([Bind(Include = "BookingId,userId,PickUpDate,ReturnDate,Percentage,BasicPrice,price,ReturnId,Booking_Cost,status,CarId,MilageIn,MilageOut")] CarHiring carHiring)
 {
     if (ModelState.IsValid)
     {
         db.Entry(carHiring).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("ReturnVehicle", "CarHirings", new { id = carHiring.BookingId }));
     }
     ViewBag.CarId = new SelectList(db.Cars, "CarId", "Description", carHiring.CarId);
     return(View(carHiring));
 }
        public ActionResult ConfirmPickUp(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CarHiring carHiring = db.CarHirings.Find(id);

            if (carHiring == null)
            {
                return(HttpNotFound());
            }
            return(View(carHiring));
        }
        public ActionResult AvailableCar(int?id)
        {
            CarHiring carHiring = db.CarHirings.Find(id);

            carHiring.status       = "Complete";
            carHiring.Booking_Cost = logic.calcGrandTotal(carHiring);
            Car car = db.Cars.ToList().Find(x => x.CarId == carHiring.CarId);

            car.Status = "Available";
            db.Entry(carHiring).State = EntityState.Modified;
            db.Entry(car).State       = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Index", "Cars"));
        }
Example #10
0
        public decimal calcKMRate(CarHiring carHiring)
        {
            var kiloRat = (from c in db.Cars
                           where c.CarId == carHiring.CarId
                           select c.KilometerRate).FirstOrDefault();
            decimal kr = (kiloRat) * calcExtraKMCost(carHiring);

            if (calcUsedKM(carHiring.CarId, carHiring.MilageIn) > calcFreeKM(carHiring))
            {
                return(kr);
            }
            else
            {
                return(kr = 0);
            }
        }
        // GET: CarHirings/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CarHiring carHiring = db.CarHirings.Find(id);

            if (carHiring == null)
            {
                return(HttpNotFound());
            }

            ViewBag.CarId = new SelectList(db.Cars, "CarId", "Description", carHiring.CarId);
            return(View(carHiring));
        }
Example #12
0
 public decimal calcFreeKM(CarHiring carHiring)
 {
     return(GetFreeKM(carHiring.CarId) * CalcNum_of_Days(carHiring));
 }
Example #13
0
 public decimal calcBasicCharge(CarHiring carHiring)
 {
     return(CalcNum_of_Days(carHiring) * GetCostperday(carHiring.CarId));
 }
Example #14
0
 public decimal calcPercentage(CarHiring carHiring)
 {
     return(carHiring.BasicPrice - (carHiring.BasicPrice * (carHiring.Percentage / 100)));
 }
Example #15
0
 public decimal calcGrandTotal(CarHiring carHiring)
 {
     return(calcBasicCharge(carHiring) + calcKMRate(carHiring));
 }
        //public ActionResult pay(int? id)
        //{
        //    StudentApplication studentApplication = db.Studentapplications.Find(id);
        //    var priceId = db.ClassFees.Where(p => p.ClassNameId == studentApplication.ClassNameId).Select(p => p.FeeTypeId).FirstOrDefault();
        //    var price = db.FeeTypes.Where(p => p.Id == priceId).Select(p => p.FeeAmount).FirstOrDefault();
        //    studentApplication.Status = "Paid";
        //    db.Entry(studentApplication).State = EntityState.Modified;

        //    // db.Studentapplications.Add(studentApplication);
        //    db.SaveChanges();
        //    return RedirectToAction("Index2");

        //}
        public ActionResult OnceOff(int?id)
        {
            var onceOffRequest = new PayFastRequest(this.payFastSettings.PassPhrase);

            // Merchant Details
            onceOffRequest.merchant_id  = this.payFastSettings.MerchantId;
            onceOffRequest.merchant_key = this.payFastSettings.MerchantKey;
            onceOffRequest.return_url   = this.payFastSettings.ReturnUrl;
            onceOffRequest.cancel_url   = this.payFastSettings.CancelUrl;
            onceOffRequest.notify_url   = this.payFastSettings.NotifyUrl;

            // Buyer Details

            onceOffRequest.email_address = "*****@*****.**";
            //onceOffRequest.email_address = "*****@*****.**";

            // Transaction Details
            CarHiring carHiring = db.CarHirings.Find(id);

            carHiring.status          = "Paid";
            db.Entry(carHiring).State = EntityState.Modified;
            db.SaveChanges();

            Car car = db.Cars.ToList().Find(x => x.CarId == carHiring.CarId);

            car.Status          = "Not Available";
            db.Entry(car).State = EntityState.Modified;
            db.SaveChanges();

            onceOffRequest.m_payment_id     = "";
            onceOffRequest.amount           = Convert.ToDouble(carHiring.Deposit);
            onceOffRequest.item_name        = "Car Hire Payment";
            onceOffRequest.item_description = "Some details about the once off payment";
            var userName = User.Identity.GetUserName();

            var mailTo = new List <MailAddress>();

            mailTo.Add(new MailAddress(userName, carHiring.CustomerName));
            var body = $"Dear {carHiring.CustomerName} {carHiring.CustomerSurname} <br/><br/>" +
                       $"Your car hiring was successful, please see details below: <br/><br/>" +
                       $"Hire Date:{System.DateTime.Now.Date} \n" +
                       $"Pick-Up Date: {carHiring.PickUpDate}\n" +
                       $"Return-Date: {carHiring.ReturnDate}\n" +
                       $"Number Of Days: {carHiring.numOfDays}\n" +
                       $"Deposit: {carHiring.Deposit}\n" +
                       $"Daily Cost: {carHiring.car.Cost_Per_Day}\n" +
                       $"Vehicle: {carHiring.car.carMake.CarMakeType} {carHiring.car.carModel.CarModelType}\n" +
                       $"Transmission: {carHiring.car.transmission.TransmissionType}\n" +
                       $"Fuel: {carHiring.car.fuel.FuelType}<br/>" +
                       $"Regards,<br/><br/> Bright Ideas <br/> .";

            LindaniDrivingSchool.Logic.EmailService emailService = new LindaniDrivingSchool.Logic.EmailService();
            emailService.SendEmail(new EmailContent()
            {
                mailTo          = mailTo,
                mailCc          = new List <MailAddress>(),
                mailSubject     = "Application Statement | Ref No.:" + carHiring.BookingId,
                mailBody        = body,
                mailFooter      = "<br/> Many Thanks, <br/> <b>Bright Ideas</b>",
                mailPriority    = MailPriority.High,
                mailAttachments = new List <Attachment>()
            });
            // Transaction Options
            onceOffRequest.email_confirmation   = true;
            onceOffRequest.confirmation_address = "*****@*****.**";

            var redirectUrl = $"{this.payFastSettings.ProcessUrl}{onceOffRequest.ToString()}";

            return(Redirect(redirectUrl));
        }