コード例 #1
0
        public ActionResult SendRequest(long tripDateId, long routeId)
        {
            var currentUser = _usersService.GetUserByLogin(System.Web.HttpContext.Current.User.Identity.Name);
            var hisTripDate = _tripsService.GetTripDateById(tripDateId);
            var hisTrip = hisTripDate.Trip;
            var hisRoute = hisTrip.TripRoute.FirstOrDefault(x => x.Id == routeId);

            if (hisTrip.OwnerId == currentUser.Id)
            {
                ViewBag.Error = "Вы пытаетесь отправить заявку самому себе";
                return PartialView("Error");
            }

            if (hisRoute == null)
            {
                ViewBag.Error = "Данного маршрута не существует";
                return PartialView("Error");
            }

            if (hisTripDate.Date < DateTime.Today)
            {
                ViewBag.Error = "Вы пытаетесь отправить заявку на прошедшую поездку";
                return PartialView("Error");
            }

            var thisRequest = _requestsService.GetRequest(currentUser.Id, routeId, tripDateId);
            if (thisRequest != null)
            {
                ViewBag.Error = "Заявка на эту поездку уже отправлена";
                return PartialView("Error");
            }

            var searchingType = hisTrip.TripType == TripType.Driver ? TripType.Passenger : TripType.Driver;
            var myTrips = _tripsService.GetActiveTripsByUserAndRoute(currentUser.Id, hisRoute.StartPointGid, hisRoute.EndPointGid, DateTime.Today, searchingType).ToList();

            string message;
            if (myTrips.Any())
            {
                // До лучших времен. Выбор к какой поездке принадлежит заявка
                /* var model = new TripsListModel
                    {
                        trips = myTrips.GroupBy(trip => trip.TripId).Select(group => new TripModel
                        {
                            TripId = group.Key,
                            MainRouteShortStr = group.First().MainRouteShortStr.Split(';'),
                            MainRouteStr = group.First().MainRouteStr.Split(';'),
                            StartDateAt = group.Min(x => x.Date),
                            StartDateTo = group.Max(x => x.Date),
                            StartPointShortName = someoneRoute.StartPointShortName,
                            EndPointShortName = someoneRoute.EndPointShortName
                        }).ToList()
                    };

                ViewBag.OwnerTripRouteId = routeId;
                ViewBag.OwnerTripDateId = tripDateId;

                return PartialView("MyTripsList", model); */

                var myTrip = _tripsService.GetById(myTrips.First().TripId);
                var myRoute =
                    myTrip.TripRoute.FirstOrDefault(
                        x => x.StartPointGid == hisRoute.StartPointGid && x.EndPointGid == hisRoute.EndPointGid);

                if (myTrip.TripType == TripType.Passenger)
                {
                    if (myTrip.TripDate.FirstOrDefault(d => d.Date == hisTripDate.Date) == null)
                    {
                        myTrip.TripDate.Add(new TripDate
                            {
                                Date = hisTripDate.Date,
                                IsDeleted = false
                            });
                    }
                }

                var request = new Request
                {
                    DriverTripId = myTrip.TripType == TripType.Driver ? myTrip.Id : hisTrip.Id,
                    PassengerTripId = myTrip.TripType == TripType.Passenger ? myTrip.Id : hisTrip.Id,
                    OwnerRouteId = hisRoute.Id,
                    OwnerTripDateId = hisTripDate.Id,
                    InitiatorId = currentUser.Id,
                    Cost = myTrip.TripType == TripType.Driver ? myRoute.Cost : 0,
                    StatusRequestId = 1,
                    CreateDate = DateTime.Now,
                    RequestToDate = hisTrip.TripType == TripType.Driver ? myTrip.TripDate.First().Date : hisTripDate.Date
                };

                _requestsService.Insert(request);
                _requestsService.SaveChanges();
                _tripsService.Save();

                message = string.Format(
                    "Вам пришла новая заявка:\n{0}-{1}\n{2}\n{3} {4}.\nВы можете Принять или Отклонить в личном кабинете. www.beride.ru", myRoute.StartPointShortName, myRoute.EndPointShortName, hisTripDate.Date.ToShortDateString(), currentUser.FirstName, currentUser.LastName);

                _smsService.SendMessage(hisTrip.User.Phone, message);

                return PartialView("YourRequestSent");
            }

            // Создаем новую поездку со стороны пользователя, если у него нет активных поездок
            var myNewTrip = new Trip
                {
                    OwnerId = currentUser.Id,
                    Seats = 1,
                    TripStatus = 1,
                    TripType = searchingType,
                    MainRouteStr = string.Format("{0};{1}", hisRoute.StartPointFullName, hisRoute.EndPointFullName),
                    MainRouteShortStr = string.Format("{0};{1}", hisRoute.StartPointShortName, hisRoute.EndPointShortName),
                    IsDeleted = false
                };

            myNewTrip.TripRoute.Add(new TripRoute
                {
                    StartPointGid = hisRoute.StartPointGid,
                    StartPointFullName = hisRoute.StartPointFullName,
                    StartPointShortName = hisRoute.StartPointShortName,
                    EndPointGid = hisRoute.EndPointGid,
                    EndPointFullName = hisRoute.EndPointFullName,
                    EndPointShortName = hisRoute.EndPointShortName,
                    Cost = 0 // Надо сделать добавление стоимости из расчета автоматом
                });

            myNewTrip.TripDate.Add(new TripDate
                {
                    Date = hisTripDate.Date,
                    IsDeleted = false
                });

            _tripsService.Insert(myNewTrip);
            _tripsService.Save();

            var entity = new Request
            {
                DriverTripId = hisTrip.TripType == TripType.Driver ? hisTrip.Id : myNewTrip.Id,
                PassengerTripId = hisTrip.TripType == TripType.Driver ? myNewTrip.Id : hisTrip.Id,
                OwnerRouteId = hisRoute.Id,
                OwnerTripDateId = hisTripDate.Id,
                InitiatorId = currentUser.Id,
                StatusRequestId = 1,
                CreateDate = DateTime.Now,
                RequestToDate = hisTrip.TripType == TripType.Driver ? myNewTrip.TripDate.First().Date : hisTripDate.Date,
                Cost = 0
            };

            _requestsService.Insert(entity);
            _requestsService.SaveChanges();

            message = string.Format(
                "Вам пришла новая заявка:\n{0}-{1}\n{2}\n{3} {4}.\nВы можете Принять или Отклонить в личном кабинете. www.beride.ru",
                myNewTrip.TripRoute.First().StartPointShortName,
                myNewTrip.TripRoute.First().EndPointShortName,
                hisTripDate.Date.ToShortDateString(),
                currentUser.FirstName,
                currentUser.LastName);

            _smsService.SendMessage(hisTrip.User.Phone, message);

            return PartialView("YourTripCreated");
        }
コード例 #2
0
        public ActionResult CreateNewTrip(long ownerTripRouteId, long ownerTripDateId)
        {
            var currentUser = _usersService.GetUserByLogin(System.Web.HttpContext.Current.User.Identity.Name);
            var ownerTripDate = _tripsService.GetTripDateById(ownerTripDateId);
            var ownerTrip = ownerTripDate.Trip;
            var ownerRoute = ownerTrip.TripRoute.FirstOrDefault(x => x.Id == ownerTripRouteId);

            if (ownerTrip != null && ownerRoute != null)
            {
                var newTrip = new Trip
                    {
                        OwnerId = currentUser.Id,
                        TripStatus = 1,
                        TripType = ownerTrip.TripType == TripType.Driver ? TripType.Passenger : TripType.Driver,
                        MainRouteStr = string.Format("{0};{1}", ownerRoute.StartPointFullName, ownerRoute.EndPointFullName),
                        MainRouteShortStr = string.Format("{0};{1}", ownerRoute.StartPointShortName, ownerRoute.EndPointShortName),
                        IsDeleted = false
                    };

                newTrip.TripRoute.Add(new TripRoute
                {
                    StartPointGid = ownerRoute.StartPointGid,
                    StartPointFullName = ownerRoute.StartPointFullName,
                    StartPointShortName = ownerRoute.StartPointShortName,
                    EndPointGid = ownerRoute.EndPointGid,
                    EndPointFullName = ownerRoute.EndPointFullName,
                    EndPointShortName = ownerRoute.EndPointShortName
                });

                newTrip.TripDate.Add(new TripDate
                {
                    Date = ownerTripDate.Date,
                    IsDeleted = false
                });

                _tripsService.Insert(newTrip);
                _tripsService.Save();

                var entity = new Request
                {
                    DriverTripId = ownerTrip.TripType == TripType.Driver ? ownerTrip.Id : newTrip.Id,
                    PassengerTripId = ownerTrip.TripType == TripType.Driver ? newTrip.Id : ownerTrip.Id,
                    OwnerRouteId = ownerRoute.Id,
                    OwnerTripDateId = ownerTripDate.Id,
                    InitiatorId = currentUser.Id,
                    StatusRequestId = 1,
                    CreateDate = DateTime.Now,
                    RequestToDate = ownerTripDate.Date
                };

                _requestsService.Insert(entity);
                _requestsService.SaveChanges();
            }

            return PartialView("YourRequestSent");
        }
コード例 #3
0
        public ActionResult SelectTrip(int myTripId, long ownerTripDateId, long ownerTripRouteId)
        {
            var currentUser = _usersService.GetUserByLogin(System.Web.HttpContext.Current.User.Identity.Name);
            var ownerTripDate = _tripsService.GetTripDateById(ownerTripDateId);
            var ownerTrip = ownerTripDate.Trip;
            var ownerRoute = ownerTrip.TripRoute.FirstOrDefault(x => x.Id == ownerTripRouteId);
            var myTrip = _tripsService.GetById(myTripId);

            if (ownerTrip != null && ownerRoute != null && myTrip != null)
            {
                myTrip.TripDate.Add(new TripDate
                    {
                        Date = ownerTripDate.Date,
                        IsDeleted = false
                    });

                var entity = new Request
                    {
                        DriverTripId = ownerTrip.TripType == TripType.Driver ? ownerTrip.Id : myTripId,
                        PassengerTripId = ownerTrip.TripType == TripType.Driver ? myTripId : ownerTrip.Id,
                        OwnerRouteId = ownerRoute.Id,
                        OwnerTripDateId = ownerTripDate.Id,
                        InitiatorId = currentUser.Id,
                        StatusRequestId = 1,
                        CreateDate = DateTime.Now,
                        RequestToDate = ownerTripDate.Date
                    };

                _requestsService.Insert(entity);
                _requestsService.SaveChanges();
                _tripsService.Save();
            }

            return PartialView("YourRequestSent");
        }
コード例 #4
0
 /// <summary>
 /// Устаревший метод для добавления новых объектов в набор EntitySet Request. Взамен можно использовать метод .Add связанного свойства ObjectSet&lt;T&gt;.
 /// </summary>
 public void AddToRequest(Request request)
 {
     base.AddObject("Request", request);
 }
コード例 #5
0
 /// <summary>
 /// Создание нового объекта Request.
 /// </summary>
 /// <param name="id">Исходное значение свойства Id.</param>
 /// <param name="driverTripId">Исходное значение свойства DriverTripId.</param>
 /// <param name="passengerTripId">Исходное значение свойства PassengerTripId.</param>
 /// <param name="initiatorId">Исходное значение свойства InitiatorId.</param>
 /// <param name="statusRequestId">Исходное значение свойства StatusRequestId.</param>
 /// <param name="createDate">Исходное значение свойства CreateDate.</param>
 /// <param name="ownerRouteId">Исходное значение свойства OwnerRouteId.</param>
 /// <param name="ownerTripDateId">Исходное значение свойства OwnerTripDateId.</param>
 /// <param name="requestToDate">Исходное значение свойства RequestToDate.</param>
 /// <param name="cost">Исходное значение свойства Cost.</param>
 public static Request CreateRequest(global::System.Int32 id, global::System.Int32 driverTripId, global::System.Int32 passengerTripId, global::System.Int32 initiatorId, global::System.Int32 statusRequestId, global::System.DateTime createDate, global::System.Int64 ownerRouteId, global::System.Int64 ownerTripDateId, global::System.DateTime requestToDate, global::System.Int32 cost)
 {
     Request request = new Request();
     request.Id = id;
     request.DriverTripId = driverTripId;
     request.PassengerTripId = passengerTripId;
     request.InitiatorId = initiatorId;
     request.StatusRequestId = statusRequestId;
     request.CreateDate = createDate;
     request.OwnerRouteId = ownerRouteId;
     request.OwnerTripDateId = ownerTripDateId;
     request.RequestToDate = requestToDate;
     request.Cost = cost;
     return request;
 }
コード例 #6
0
 public void Insert(Request entity)
 {
     db.AddToRequest(entity);
 }
コード例 #7
0
 public void Delete(Request entity)
 {
     throw new NotImplementedException();
 }