public ActionResult DeletePost(int id)
        {
            VehicleAvailability vehicleavailability = context.vehicleAvailabilityC.SingleOrDefault(x => x.AvailabilityId == id);

            context.vehicleAvailabilityC.Remove(vehicleavailability);
            context.SaveChanges();
            return(RedirectToAction("Index1", "ManageAvailability", new { id = Session["vid"].ToString() }));
        }
 public ActionResult Create(VehicleAvailability vehicleavailability)
 {
     if (ModelState.IsValid)
     {
         vehicleavailability.VehicleId = Session["vid"].ToString();
         context.vehicleAvailabilityC.Add(vehicleavailability);
         context.SaveChanges();
         return(RedirectToAction("Index1", "ManageAvailability", new { id = Session["vid"].ToString() }));
     }
     return(View(vehicleavailability));
 }
        public ActionResult maping(VehicleAvailability available)
        {
            Debug.WriteLine(available.latitude);
            var find = db.vehicleAvailabilityC.Where(x => x.latitude <= available.latitude + 0.3 && x.longitude <= available.longitude || x.latitude >= available.latitude - 0.3 && x.latitude <= available.latitude).ToList();

            if (find != null)
            {
                string marker = "[";

                foreach (var item in find)
                {
                    marker += "{";
                    marker += "title:'" + item.VehicleId.ToString() + "',";
                    marker += "lat:" + item.latitude + ",";
                    marker += "lng:" + item.longitude + ",";

                    marker += "},";
                }
                marker += "]";
                Debug.WriteLine(marker);
                return(RedirectToAction("findresult", new { mark = marker.ToString() }));
            }
            return(View());
        }
示例#4
0
        public async Task <IActionResult> BookIt([FromBody] AvailableVehicleModelView data)
        {
            POJOMsgs POJOmodel     = new POJOMsgs();
            string   currentUserId = _userManager.GetUserId(HttpContext.User);//Get UserId

            if (currentUserId != null)
            {
                //get the current location of the car
                //  VehicleCurrentLocation _VehicleCurrentLocation = await _context.VehicleCurrentLocations.FirstOrDefaultAsync(car =>car.VehicleId==data.VehicleId);
                try
                {
                    //GEt the user email
                    var _User = await _context.Users.FindAsync(currentUserId);

                    //GEt the vehicle details
                    Vehicle _Vehicle = await _context.Vehicles.FindAsync(data.VehicleId);

                    //Get the total hours and price
                    double TotalPrice = _Vehicle.PricePerHour * (Convert.ToInt32(data.DropOffTime) - Convert.ToInt32(data.PickUpTime));
                    // string currentUserId = _userManager.GetUserId(HttpContext.User);//Get UserId
                    Reservation model = new Reservation
                    {
                        VehicleId               = data.VehicleId,
                        PickUpLocationLatitue   = data.PickLatitue,   // car current location
                        PickUpLocationLongitute = data.PickLongitute, // car current location
                        ReturnLocationLatitue   = data.DropoffLatitue,
                        ReturnLocationLongitute = data.DropoffLongitute,
                        PickUpDate              = Convert.ToDateTime(data.PickUpDate),
                        //   DropOffDate = Convert.ToDateTime(data.DropOffDate),
                        PickUpTime  = data.PickUpTime,
                        DropOffTime = data.DropOffTime,
                        UserId      = currentUserId,
                        CreateTime  = DateTime.Now,
                        UpdateTime  = DateTime.Now,
                        Amount      = TotalPrice
                    };
                    //Adding New Reservation
                    await _context.Reservations.AddAsync(model);

                    await _context.SaveChangesAsync();

                    int _ReservationId = model.Id;
                    //to add/or update VehicleAvailabilities tb (5,2)
                    VehicleAvailability _AvailableVehicle = await _context.VehicleAvailabilities.FirstOrDefaultAsync(a => a.VehicleId == model.VehicleId && a.Date == model.PickUpDate);

                    //if avail just update it
                    if (_AvailableVehicle != null)
                    {
                        string TempBookingTime = _AvailableVehicle.BookingTime + "," + model.PickUpTime + "," + model.DropOffTime;
                        _AvailableVehicle.BookingTime = TempBookingTime;
                        _AvailableVehicle.UpdateTime  = DateTime.Now;
                        _AvailableVehicle.UserId      = currentUserId;
                        //update VehicleAvailabilities
                        _context.VehicleAvailabilities.Update(_AvailableVehicle);
                        await _context.SaveChangesAsync();
                    }
                    else
                    {
                        VehicleAvailability _availableVehicle = new VehicleAvailability
                        {
                            VehicleId   = data.VehicleId,
                            Date        = model.PickUpDate,
                            BookingTime = model.PickUpTime + "," + model.DropOffTime,
                            UserId      = currentUserId,
                            CreateTime  = DateTime.Now,
                            UpdateTime  = DateTime.Now
                        };
                        //Add new VehicleAvailabilities
                        await _context.VehicleAvailabilities.AddAsync(_availableVehicle);

                        await _context.SaveChangesAsync();
                    }



                    //after create order after booking
                    Order _Order = new Order
                    {
                        VehicleId  = data.VehicleId,
                        UserId     = currentUserId,
                        PickUpDate = Convert.ToDateTime(data.PickUpDate),
                        //   DropOffDate = Convert.ToDateTime(data.DropOffDate),
                        PickUpTime    = data.PickUpTime,
                        DropOffTime   = data.DropOffTime,
                        ReservationId = _ReservationId
                    };

                    _Order.TotalAmount = TotalPrice; //Need the total hours
                    _Order.IsPaid      = false;      //before pay
                    _Order.CreateDate  = DateTime.Now;
                    _Order.UpdateDate  = DateTime.Now;
                    await _context.Orders.AddAsync(_Order);

                    await _context.SaveChangesAsync();

                    POJOmodel.Flag = true;
                    POJOmodel.Msg  = _Order.Id.ToString();


                    //Do Job
                    IJobDetail _JobDeleteUnpaid = JobBuilder.Create <JobDeleteUnpaid>()
                                                  .UsingJobData("Id", _Order.Id.ToString())
                                                  .UsingJobData("Email", _User.Email)
                                                  .WithIdentity("simplejob" + _Order.Id.ToString(), "quartzexapmle" + _Order.Id.ToString())
                                                  .Build();

                    ITrigger _JobDeleteUnpaid_triger = TriggerBuilder.Create()
                                                       .WithIdentity("testtrigger" + _Order.Id.ToString(), "quartzexapmle" + _Order.Id.ToString())
                                                       .StartNow()
                                                       .WithSimpleSchedule(x => x.WithIntervalInMinutes(3).WithRepeatCount(2))
                                                       .Build();
                    await _scheduler.ScheduleJob(_JobDeleteUnpaid, _JobDeleteUnpaid_triger);

                    //
                }
                catch (Exception e)
                {
                    POJOmodel.Flag = false;
                    POJOmodel.Msg  = e.ToString();
                }
            }
            else
            {
                POJOmodel.Flag = false;
                POJOmodel.Msg  = "Plase, Login or Regiester....";
            }


            return(Json(POJOmodel));
        }
        public ActionResult Delete(int id)
        {
            VehicleAvailability vehicleavailability = context.vehicleAvailabilityC.SingleOrDefault(x => x.AvailabilityId == id);

            return(View(vehicleavailability));
        }
示例#6
0
        public async Task Execute(IJobExecutionContext context)
        {
            JobDataMap _data     = context.JobDetail.JobDataMap;
            string     Id        = _data.GetString("Id");
            string     UserEmail = _data.GetString("Email");;

            Debug.WriteLine($"From Delte {Id}  his email {UserEmail}");
            var optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>();

            optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
            using (var _context = new ApplicationDbContext(optionsBuilder.Options))
            {
                int MyId = Convert.ToInt32(Id);

                //Check, if still not paid delete it
                Reservation _DeleteReservation = await _context.Reservations.FirstOrDefaultAsync(r => r.Id == MyId && r.IsConfirmed == false);

                if (_DeleteReservation != null)
                {
                    var StartTime = DateTime.Now;
                    var Sub       = StartTime.Subtract(_DeleteReservation.CreateTime);
                    //time need to delete after 2 min as test...
                    var FromNow = TimeSpan.FromMinutes(2);
                    if (Sub >= FromNow)
                    {
                        //remove order, booking and reservation.
                        Order _order = await _context.Orders.FirstOrDefaultAsync(ord => ord.ReservationId == _DeleteReservation.Id);

                        string TimesToDelete = _DeleteReservation.PickUpTime + "," + _DeleteReservation.DropOffTime;
                        //Booking Table
                        VehicleAvailability _VehicleAvailability = await _context.VehicleAvailabilities
                                                                   .FirstOrDefaultAsync(va => va.Date == _DeleteReservation.PickUpDate && va.VehicleId == _DeleteReservation.VehicleId);

                        string Times    = _VehicleAvailability.BookingTime;
                        string NewTimes = string.Empty;
                        if (Times.Contains(TimesToDelete))
                        {
                            NewTimes = Times.Remove(Times.IndexOf(TimesToDelete), TimesToDelete.Length);
                        }
                        //Send the New Time Table
                        _VehicleAvailability.BookingTime = NewTimes;
                        _context.VehicleAvailabilities.Update(_VehicleAvailability);
                        _context.Orders.Remove(_order);
                        //should remve to, if no will be show in predected result
                        _context.Reservations.Remove(_DeleteReservation);
                        await _context.SaveChangesAsync();

                        //Need Update the Availabiltiy tb too(after workin)..
                        Debug.WriteLine($"Reservation has been Deleted: {Id} ");
                        //Send Email to inform the user the booking has been cancceld
                        await _emailSender.SendEmailAsync(UserEmail, "Car Share Service", $" Dear User, Your Booking Num# {Id} has been canceled...");
                    }
                }//End of not null
                 //IQueryable<Reservation> _Unpaid = _context.Reservations.Where(r => r.IsConfirmed == false);
                 //foreach (var item in _Unpaid)
                 //{
                 //    var StartTime = DateTime.Now;
                 //    var Sub = StartTime.Subtract(item.CreateTime);
                 //    var FromNow = TimeSpan.FromMinutes(30);
                 //    if (Sub >= FromNow)
                 //    {
                 //        Reservation _DeleteReservation = await _context.Reservations.FindAsync(item.Id);
                 //        _context.Reservations.Remove(_DeleteReservation);
                 //        await  _context.SaveChangesAsync();
                 //        //Need Update the Availabiltiy tb too(after workin)..
                 //        Debug.WriteLine($"Deleted {item.Id} ");
                 //    }

                //}
                _context.Dispose();
            }
        }