예제 #1
0
        // GET: Request
        public ActionResult Index()
        {
            var RidesIdThisUserThroughRequests = unitOfWork.Rides.ListOfRidesID(User.Identity.GetUserId()); // ---------------Ok

            if (User.IsInRole(RoleName.Driver))
            {
                var myRides = unitOfWork.Rides.GetRidesPerDriver(User.Identity.GetUserId());
                var model   = new RideViewModel()
                {
                    // Oles oi diadromes tou ekastote odhgou
                    Rides = myRides,
                    // Fernw se lista tis arxikes diathesimes theseis ths kathe diadromhs
                    SeatsOffered = unitOfWork.Requests.ListOfSeatsOffered(myRides),
                };
                return(View("DriverRides", model));
            }
            else
            {
                var viewModel = new RequestViewModel()
                {
                    Requests = unitOfWork.Requests
                               .ListOfRideIDThroughRequests(RidesIdThisUserThroughRequests, User.Identity.GetUserId())
                               .OrderBy(i => i.Ride.TimeRideStarted)
                };
                return(View(viewModel));
            }
        }
예제 #2
0
        // Post
        public ActionResult Save(RideViewModel model, int rideID)
        {
            if (rideID != 0) // Edit
            {
                if (!ModelState.IsValid)
                {
                    model.RideID         = rideID;
                    model.AvailableSeats = Ride.UpDateAvailableSeats(unitOfWork.Rides.NumberOfSeatsOffered(rideID));

                    return(View("UpDateRide", model));
                }

                unitOfWork.Rides.UpdateRide(model, rideID);
            }
            else
            {
                if (!ModelState.IsValid)
                {
                    model.AvailableSeats = Ride.CreateAvailableSeatsForDrivers();

                    return(View("CreateRide", model));
                }

                var memberCarID = unitOfWork.MemberCar.GetMemberCarID(User.Identity.GetUserId());

                var memberViewModel = unitOfWork.Rides.CreateRide(model, memberCarID);


                // Prosthikh ths neas diadromhs
                unitOfWork.Rides.Add(Ride.CreateNewRide(memberViewModel));
            }

            unitOfWork.Complete();
            return(RedirectToAction("Index", "Request"));
        }
예제 #3
0
        public JsonResult CalculateTaxiFare(RideViewModel rideViewModel)
        {
            var totalPrice = _fareCalculatorService.Calculate(Mapper.Map <RideViewModel, RideHistory>(rideViewModel));

            rideViewModel.TotalPrice = totalPrice;
            return(BetterJson(rideViewModel));
        }
예제 #4
0
        public void PostTest()
        {
            RideController rideController = new RideController(_mockRideService.Object);
            RideViewModel  rideViewModel  = new RideViewModel();
            var            result         = rideController.Post(rideViewModel);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.TotalPrice, 5);
        }
예제 #5
0
        public ActionResult Create()
        {
            var model = new RideViewModel()
            {
                AvailableSeats = Ride.CreateAvailableSeatsForDrivers()
            };

            return(View("CreateRide", model));
        }
예제 #6
0
        public FareSummary Post(RideViewModel rideViewModel)
        {
            Ride ride = new Ride();

            rideViewModel.UpdateModel(ride);
            var fareSummary = _rideService.GetFareSummary(ride);

            return(fareSummary);
        }
예제 #7
0
        public async Task <IHttpActionResult> Register(RideBindingModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }



                using (DunkeyContext ctx = new DunkeyContext())
                {
                    if (ctx.Rider.Any(x => x.Email == model.Email))
                    {
                        return(Content(HttpStatusCode.OK, new CustomResponse <Error>
                        {
                            Message = "Conflict",
                            StatusCode = (int)HttpStatusCode.Conflict,
                            Result = new Error {
                                ErrorMessage = "Rider with email already exists"
                            }
                        }));
                    }
                    else
                    {
                        Rider rideModel = new Rider()
                        {
                            FullName     = model.FullName,
                            BusinessName = model.BusinessName,
                            Email        = model.Email,
                            BusinessType = model.BusinessType,
                            Status       = (int)Global.StatusCode.NotVerified,
                            Phone        = model.Phone,
                            ZipCode      = model.ZipCode
                        };

                        ctx.Rider.Add(rideModel);
                        ctx.SaveChanges();
                        using (RideViewModel rideViewModel = new RideViewModel(rideModel))
                        {
                            //userViewModel.Token = await Utility.GenerateToken(userModel.Email, userModel.Password, Request);
                            CustomResponse <RideViewModel> response = new CustomResponse <RideViewModel> {
                                Message = "Success", StatusCode = (int)HttpStatusCode.OK, Result = rideViewModel
                            };
                            return(Ok(response));
                            //return Request.CreateResponse(HttpStatusCode.OK, response);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(DunkeyDelivery.Utility.LogError(ex)));
            }
        }
예제 #8
0
        // Get
        public ActionResult UpDateRide(int rideID)
        {
            var model = new RideViewModel()
            {
                RideID         = rideID,
                AvailableSeats = Ride.UpDateAvailableSeats(unitOfWork.Rides.NumberOfSeatsOffered(rideID)),
            };

            return(View("UpDateRide", model));
        }
예제 #9
0
        public IActionResult Ride()
        {
            IEnumerable <Account>   account    = this._accountLogic.GetAllEmployees();
            IEnumerable <PickOrder> pickOrders = this._pickOrderLogic.GetAllPickOrders();
            IEnumerable <Vehicle>   vehicles   = this._vehicleLogic.GetAllVehicles();

            RideViewModel model = new RideViewModel(account, pickOrders, vehicles);

            return(View(model));
        }
예제 #10
0
        public RideViewModel CreateRide(string placeFrom, string placeTo, string dateFrom, string timeFrom, string timeDelay, string timeTravel, string timeBreak, string passengersNomber, bool isTotalPrice, float price, string userId)
        {
            RideViewModel viewModel = new RideViewModel();

            try
            {
                using (DataContext db = new DataContext())
                {
                    string[] placeFromArgs = placeFrom.Split(new string[] { " (" }, StringSplitOptions.None).Select(p => p.TrimEnd(new char[] { ')' })).ToArray();
                    string[] placeToArgs   = placeTo.Split(new string[] { " (" }, StringSplitOptions.None).Select(p => p.TrimEnd(new char[] { ')' })).ToArray();

                    DateTime startTime         = Convert.ToDateTime(dateFrom + " " + timeFrom);
                    int      travelTimeMinutes = Convert.ToInt32(Math.Floor(new TimeSpan(Convert.ToDateTime(timeTravel).TimeOfDay.Ticks).TotalMinutes));
                    int      delayTimeMinutes  = !String.IsNullOrEmpty(timeDelay) ? Convert.ToInt32(Math.Floor(new TimeSpan(Convert.ToDateTime(timeDelay).TimeOfDay.Ticks).TotalMinutes)) : 0;
                    int      breakTimeMinutes  = !String.IsNullOrEmpty(timeBreak) ? Convert.ToInt32(Math.Floor(new TimeSpan(Convert.ToDateTime(timeBreak).TimeOfDay.Ticks).TotalMinutes)) : 0;

                    db.Rides.Add(new Ride()
                    {
                        FromCity          = placeFromArgs[0],
                        FromCounty        = placeFromArgs[1],
                        ToCity            = placeToArgs[0],
                        ToCounty          = placeToArgs[1],
                        StartTime         = startTime,
                        DriverUserId      = userId,
                        TravelTime        = travelTimeMinutes,
                        DelayedStartTime  = delayTimeMinutes,
                        BreakTime         = breakTimeMinutes,
                        MaxPassengers     = Int32.Parse(passengersNomber),
                        TotalPrice        = isTotalPrice ? price : 0,
                        PricePerPassenger = !isTotalPrice ? price : 0,
                        EndTime           = startTime.AddMinutes(travelTimeMinutes + delayTimeMinutes + breakTimeMinutes),
                        DateCreated       = DateTime.Now
                    });

                    db.SaveChanges();
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}", validationErrors.Entry.Entity.ToString(), validationError.ErrorMessage);  // todo
                    }
                }
            }
            catch (Exception e)
            {
                // todo
            }
            return(viewModel);
        }
예제 #11
0
        // GET: Ride
        public ActionResult Index()
        {
            var drivers   = db.Drivers.ToList();
            var viewModel = new RideViewModel
            {
                Ride       = new Ride(),
                DriverList = drivers
            };

            return(View(viewModel));
        }
예제 #12
0
        public void UpdateRide(RideViewModel model, int rideID)
        {
            var rideDB = GetRideInfo(rideID);

            rideDB.SourceCity.CityName      = model.Ride.SourceCity.CityName;
            rideDB.SourceCity.CityCode      = model.Ride.SourceCity.CityCode;
            rideDB.DestinationCity.CityName = model.Ride.DestinationCity.CityName;
            rideDB.DestinationCity.CityCode = model.Ride.DestinationCity.CityCode;
            rideDB.TimeRideStarted          = model.GetStartedDateTime();
            rideDB.TimeRideArrives          = model.GetArrivesDateTime();
            rideDB.AvailableSeatsOffered   += model.SelectNumberOfSeats;
        }
예제 #13
0
        public async Task <IActionResult> PostRideAsync(RideViewModel rideViewModel)
        {
            var ride = mapper.Map <Ride>(rideViewModel);

            var result = await rideService.AddRideAsync(ride);

            if (result.Success)
            {
                return(Ok(result.Message));
            }

            return(BadRequest(result.Message));
        }
예제 #14
0
        public MemberViewModel CreateRide(RideViewModel model, int memberCarID)
        {
            var memberViewModel = new MemberViewModel()
            {
                Ride                = model.Ride,
                StartedDate         = model.StartedDate,
                StartedTime         = model.StartedTime,
                ArivesDate          = model.ArivesDate,
                ArivesTime          = model.ArivesTime,
                SelectNumberOfSeats = model.SelectNumberOfSeats,
                MemberCarID         = memberCarID
            };

            return(memberViewModel);
        }
예제 #15
0
        //TODO: AutoMapper
        private RideSharing MapRideVM(RideViewModel rideVm)
        {
            var ride = GetEntity();

            ride.Id            = rideVm.Id;
            ride.StartLocation = rideVm.StartLocation;
            ride.EndLocation   = rideVm.EndLocation;
            ride.StartDate     = rideVm.StartDate;
            ride.EndDate       = rideVm.EndDate;
            ride.CarId         = Convert.ToInt64(rideVm.CarId.Value);
            ride.EmployeeRides = rideVm.EmployeeIds.Select(x =>
            {
                return(new EmployeeRide
                {
                    EmployeeId = Convert.ToInt64(x.Value),
                    RideId = rideVm.Id
                });
            }).ToList();
            return(ride);
        }
예제 #16
0
        // GET: Ride/Create
        public ActionResult Create()
        {
            var user = new User();

            if (Session["loginUser"] == null)
            {
                TempData["error"] = "PleaseLogin first";
                return(RedirectToAction("index", "Home"));
            }
            else
            {
                user = Session["loginUSer"] as User;
                var userInDb  = db.Users.First(u => u.Id == user.Id);
                var drivers   = db.Drivers.ToList();
                var viewModel = new RideViewModel
                {
                    Ride       = new Ride(),
                    DriverList = drivers
                };
                return(View(viewModel));
            }
        }
예제 #17
0
        // GET: History
        public ActionResult Index(RequestViewModel requestViewModel) // OK -----------------------
        {
            if (User.IsInRole(RoleName.Driver))
            {
                var myRides = unitOfWork.Rides.GetRidesPerDriver(User.Identity.GetUserId());
                var model   = new RideViewModel()
                {
                    Rides = myRides,
                    // Fernw se lista tis palies diadromes tou odhgou
                    Historyrides = myRides.FirstOrDefault().GetListOfLastRides(myRides),
                    SeatsOffered = unitOfWork.Requests.ListOfSeatsOffered(myRides)
                };
                return(View("DriverHistoryRides", model));
            }
            var listOfRequests = new List <Request>();
            // Fernw ta RequestID tou sygkekrimenou Passenger
            var ListOfRequestID = unitOfWork.Requests.GetRequestIDPerPassenger(User.Identity.GetUserId());

            foreach (var requestID in ListOfRequestID)
            {   // Fernw ta stoixeia tou sygkekrimenou Request
                var requestDB = unitOfWork.Requests.GetInfoPerRequest(requestID);

                if (requestDB.Ride.TimeRideStarted < DateTime.Now)
                {
                    listOfRequests.Add(requestDB);
                }
            }

            var viewModel = new RequestViewModel()
            {
                Requests = listOfRequests.OrderBy(i => i.Ride.TimeRideStarted).AsEnumerable(),
                IsRated  = requestViewModel.IsRated
            };

            return(View("HistoryView", viewModel));
        }
예제 #18
0
        public async Task DeleteAsync(RideViewModel rideVM)
        {
            var ride = MapRideVM(rideVM);

            await DeleteAsync(ride);
        }
예제 #19
0
        public RidePage()
        {
            InitializeComponent();

            BindingContext = vm = new RideViewModel();
        }
예제 #20
0
        public async Task CreateAsync(RideViewModel rideVM)
        {
            var ride = MapRideVM(rideVM);

            await AddAsync(ride);
        }
예제 #21
0
        public async Task UpdateAsync(RideViewModel rideVM)
        {
            var ride = MapRideVM(rideVM);

            await UpdateAsync(ride);
        }
예제 #22
0
        public ActionResult Index()
        {
            var model = new RideViewModel();

            return(View("Index", model));
        }