示例#1
0
        public static RouteGroupModel CastSuggestRouteToRouteGroup(vwRouteSuggest routeSuggest)
        {
            var routeGroup = new RouteGroupModel();

            routeGroup.RgHolderRrId = routeSuggest.SelfRouteRequestId;
            routeGroup.RouteId      = routeSuggest.RouteRequestId;
            return(routeGroup);
        }
示例#2
0
        public List <GroupModel> GetSuggestedGroups(int routeRequestId)
        {
            var suggestedGroups = new List <GroupModel>();

            using (var dataModel = new MibarimEntities())
            {
                var groupRoutes  = new List <vwRouteGroup>();
                var groupRouteNo = dataModel.vwRouteGroups.Where(x => x.RouteRequestId == routeRequestId && !x.RGIsConfirmed).Select(y => y.GroupId).ToList();
                if (groupRouteNo.Count > 0)
                {
                    groupRoutes = dataModel.vwRouteGroups.Where(x => groupRouteNo.Contains(x.GroupId) && x.RouteRequestId != routeRequestId).ToList();
                }
                if (groupRoutes.Count > 0)
                {
                    var timings = _timingService.GetRequestTimings(groupRoutes.Select(x => x.RouteRequestId).ToList());
                    var groups  = groupRoutes.GroupBy(p => p.GroupId,
                                                      (key, g) => new
                    {
                        RouteGroupId = key,
                        requests     = g.ToList()
                    });
                    foreach (var group in groups)
                    {
                        var groupModel = new GroupModel();
                        groupModel.GroupId = group.RouteGroupId;
                        var routeGrouplist = new List <RouteGroupModel>();
                        foreach (var request in group.requests)
                        {
                            var routeGroupModel = new RouteGroupModel();
                            routeGroupModel.RouteId        = request.RouteRequestId;
                            routeGroupModel.RgHolderRrId   = request.RGHolderRRId;
                            routeGroupModel.SrcLatitude    = request.SrcLatitude.ToString();
                            routeGroupModel.SrcLongitude   = request.SrcLongitude.ToString();
                            routeGroupModel.DstLatitude    = request.DstLatitude.ToString();
                            routeGroupModel.DstLongitude   = request.DstLongitude.ToString();
                            routeGroupModel.DstLongitude   = request.DstLongitude.ToString();
                            routeGroupModel.RgIsConfimed   = request.RGIsConfirmed;
                            routeGroupModel.IsDrive        = request.IsDrive;
                            routeGroupModel.AccompanyCount = request.AccompanyCount;
                            routeGroupModel.Name           = request.Name;
                            routeGroupModel.Family         = request.Family;
                            routeGroupModel.PricingString  = _pricingManager.GetPriceString(new RouteRequestModel()
                            {
                                PriceOption = (PricingOptions)request.RRPricingOption,
                                CostMinMax  = (decimal)request.RRPricingMinMax,
                                IsDrive     = (bool)request.IsDrive
                            });
                            routeGroupModel.CarString    = GetCarString(request);
                            routeGroupModel.TimingString = _timingService.GetTimingString(timings.Where(y => y.RouteRequestId == request.RouteRequestId).ToList());
                            routeGrouplist.Add(routeGroupModel);
                        }
                        groupModel.GroupMembers = routeGrouplist;
                        suggestedGroups.Add(groupModel);
                    }
                }
            }
            return(suggestedGroups);
        }
示例#3
0
        public IHttpActionResult GetPassengerConfirm(RouteGroupModel model)
        {
            try
            {
                var res = _groupManager.GetPassengerConfirmInfo(int.Parse(User.Identity.GetUserId()), model.GroupId,
                                                                model.RouteId);

                return(Json(_responseProvider.GenerateResponse(res)));
            }
            catch (Exception e)
            {
                _logProvider.Log(Tag, "GetPassengerConfirm", e.Message);
            }
            return(Json(_responseProvider.GenerateUnknownErrorResponse()));
        }
示例#4
0
        public IHttpActionResult DeleteGroupSuggest(RouteGroupModel model)
        {
            try
            {
                var res = _routemanager.DeleteGroupSuggest(int.Parse(User.Identity.GetUserId()), model.RouteId, model.GroupId);

                return(Json(_responseProvider.GenerateResponse(new List <string> {
                    res
                }, "JoinGroup")));
            }
            catch (Exception e)
            {
                _logmanager.Log(Tag, "DeleteGroupSuggest", e.Message);
            }
            return(Json(_responseProvider.GenerateUnknownErrorResponse()));
        }
示例#5
0
        public List <RouteGroupModel> GetRouteGroup(int routeRequestId)
        {
            var groupRoutes = new List <RouteGroupModel>();

            using (var dataModel = new MibarimEntities())
            {
                //var userGroupRoutes = dataModel.vwRouteGroups.Where(x => x.RGHolderRRId == routeRequestId && x.RGIsConfirmed).ToList();
                var userGroupRoutes = new List <vwRouteGroup>();
                var groupRouteNo    = dataModel.vwRouteGroups.FirstOrDefault(x => x.RouteRequestId == routeRequestId && x.RGIsConfirmed);
                if (groupRouteNo != null)
                {
                    userGroupRoutes = dataModel.vwRouteGroups.Where(x => x.GroupId == groupRouteNo.GroupId && x.RouteRequestId != routeRequestId).ToList();
                }
                if (userGroupRoutes.Count > 0)
                {
                    var timings = _timingService.GetRequestTimings(userGroupRoutes.Select(x => x.RouteRequestId).ToList());
                    foreach (var vwgroupRoute in userGroupRoutes)
                    {
                        var routeGroupModel = new RouteGroupModel();
                        routeGroupModel.RouteId        = vwgroupRoute.RouteRequestId;
                        routeGroupModel.SrcLatitude    = vwgroupRoute.SrcLatitude.ToString();
                        routeGroupModel.SrcLongitude   = vwgroupRoute.SrcLongitude.ToString();
                        routeGroupModel.DstLatitude    = vwgroupRoute.DstLatitude.ToString();
                        routeGroupModel.DstLongitude   = vwgroupRoute.DstLongitude.ToString();
                        routeGroupModel.RgHolderRrId   = vwgroupRoute.RGHolderRRId;
                        routeGroupModel.GroupId        = vwgroupRoute.GroupId;
                        routeGroupModel.Name           = vwgroupRoute.Name;
                        routeGroupModel.Family         = vwgroupRoute.Family;
                        routeGroupModel.RgIsConfimed   = vwgroupRoute.RGIsConfirmed;
                        routeGroupModel.AccompanyCount = vwgroupRoute.AccompanyCount;
                        routeGroupModel.IsDrive        = vwgroupRoute.IsDrive;
                        routeGroupModel.CarString      = GetCarString(vwgroupRoute);
                        routeGroupModel.PricingString  = _pricingManager.GetPriceString(new RouteRequestModel()
                        {
                            PriceOption = (PricingOptions)vwgroupRoute.RRPricingOption,
                            CostMinMax  = (decimal)vwgroupRoute.RRPricingMinMax,
                            IsDrive     = (bool)vwgroupRoute.IsDrive
                        });
                        routeGroupModel.TimingString = _timingService.GetTimingString(timings.Where(y => y.RouteRequestId == vwgroupRoute.RouteRequestId).ToList());
                        groupRoutes.Add(routeGroupModel);
                    }
                }
            }
            return(groupRoutes);
        }
示例#6
0
        public bool AddRouteGroup(int userId, RouteGroupModel model, int suggestAccompanyCount)
        {
            var routegroup = new RouteGroup();

            using (var dataModel = new MibarimEntities())
            {
                //I have a group and add this route to it
                var userGroup = dataModel.vwRouteGroups.FirstOrDefault(x => x.RGHolderRRId == model.RgHolderRrId && x.RouteRequestId == model.RgHolderRrId && x.RGIsConfirmed);
                //I'm part of a group and add this to that group
                if (userGroup == null)
                {
                    userGroup = dataModel.vwRouteGroups.FirstOrDefault(x => x.UserId == userId && x.RouteRequestId == model.RgHolderRrId && x.RGIsConfirmed);
                }
                if (userGroup == null)
                {
                    if (IsAddQuataExceed(userId, model.RgHolderRrId))
                    {
                        _responseProvider.SetBusinessMessage(new MessageResponse()
                        {
                            Type = ResponseTypes.Error, Message = getResource.getMessage("OnlythreeGroupAllowed")
                        });
                        return(false);
                    }
                    using (var dbContextTransaction = dataModel.Database.BeginTransaction())
                    {
                        try
                        {
                            var group = new Group()
                            {
                                GCreateTime  = DateTime.Now,
                                GIsDeleted   = false,
                                GCreatorUser = userId
                            };
                            dataModel.Groups.Add(group);
                            dataModel.SaveChanges();
                            routegroup.RGCreateTime     = DateTime.Now;
                            routegroup.GroupId          = group.GroupId;
                            routegroup.RGRouteRequestId = model.RouteId;
                            routegroup.RGHolderRRId     = model.RgHolderRrId;
                            routegroup.RGIsDeleted      = false;
                            routegroup.RGIsConfirmed    = false;
                            dataModel.RouteGroups.Add(routegroup);
                            var holderRoutegroup = new RouteGroup();
                            holderRoutegroup.RGCreateTime     = DateTime.Now;
                            holderRoutegroup.GroupId          = group.GroupId;
                            holderRoutegroup.RGRouteRequestId = model.RgHolderRrId;
                            holderRoutegroup.RGHolderRRId     = model.RgHolderRrId;
                            holderRoutegroup.RGIsDeleted      = false;
                            holderRoutegroup.RGIsConfirmed    = true;
                            dataModel.RouteGroups.Add(holderRoutegroup);
                            dbContextTransaction.Commit();
                        }
                        catch (Exception)
                        {
                            dbContextTransaction.Rollback();
                        }
                    }
                }
                else
                {
                    if (GroupRouteCount(userGroup.GroupId) + suggestAccompanyCount > 5)
                    {
                        _responseProvider.SetBusinessMessage(new MessageResponse()
                        {
                            Type = ResponseTypes.Error, Message = getResource.getMessage("GroupCapacityExceed")
                        });
                        return(false);
                    }
                    if (IsRepeated(userId, model.RgHolderRrId, model.RouteId, userGroup.GroupId))
                    {
                        _responseProvider.SetBusinessMessage(new MessageResponse()
                        {
                            Type = ResponseTypes.Error, Message = getResource.getMessage("RequestRepeated")
                        });
                        return(false);
                    }
                    routegroup.RGCreateTime     = DateTime.Now;
                    routegroup.GroupId          = userGroup.GroupId;
                    routegroup.RGRouteRequestId = model.RouteId;
                    routegroup.RGHolderRRId     = model.RgHolderRrId;
                    routegroup.RGIsDeleted      = false;
                    routegroup.RGIsConfirmed    = false;
                    dataModel.RouteGroups.Add(routegroup);
                }
                dataModel.SaveChanges();
            }
            return(true);
        }