Beispiel #1
0
        public HttpResponseMessage GetYourFriendPlans(Int32 UserID, Int16 Pageindex, Int16 Pagesize)
        {
            try
            {
                var users = (from A in db.UserFriends
                             join B in db.UserGoing on A.Matched_UserID equals B.UserID into AB
                             from B in AB.DefaultIfEmpty()
                             join C in db.TourDate on B.TourDateID equals C.TourDateID into BD
                             from C in BD.DefaultIfEmpty()
                             where A.UserID == UserID && A.Matched_UserID != 0 && B.RecordStatus == "Going" && C.TicketingEventID == null
                             select B.TourDateID).ToList();

                int RemainingRecord = Pagesize;
                var _list           = (from A in db.TourDate
                                       join B in db.Artists on A.ArtistID equals B.ArtistID into AB
                                       from B in AB.DefaultIfEmpty()
                                       join C in db.Venue on A.VenueID equals C.VenueID into AC
                                       from C in AC.DefaultIfEmpty()
                                       where users.Contains(A.TourDateID) && A.Tour_Utcdate > DateTime.Now && A.IsDeleted == false
                                       select new ViewYourFreiendplanlst()
                {
                    TourDateID = A.TourDateID,
                    ArtistID = A.ArtistID,
                    ArtistName = B.ArtistName,
                    ImageURL = B.ImageURL,
                    BannerImage_URL = B.BannerImage_URL,
                    Datetime_Local = A.Datetime_Local.Value,
                    VenueName = C.VenueName,
                    Going = (from G in db.UserFriends
                             join H in db.Users on G.Matched_UserID equals H.UserID into GH
                             from H in GH.DefaultIfEmpty()
                             join I in db.UserGoing on H.UserID equals I.UserID into HI
                             from I in HI.DefaultIfEmpty()
                             where G.UserID == UserID && I.TourDateID == A.TourDateID && H.RecordStatus == "Going"
                             select new ViewFriendPlans()
                    {
                        Email = H.Email,
                        ImageURL = H.ImageURL,
                        ThumbnailURL = H.ThumbnailURL,
                        UserID = H.UserID,
                        UserName = H.UserName
                    }).ToList()
                }).OrderBy(x => x.ArtistID).Skip(Pageindex * Pagesize).Take(Pagesize).ToList();

                RemainingRecord = RemainingRecord - _list.Count;

                var goingList = (from A in db.UserFriends
                                 join B in db.UserGoing on A.Matched_UserID equals B.UserID into AB
                                 from B in AB.DefaultIfEmpty()
                                 where A.UserID == UserID && A.Matched_UserID > 0 &&
                                 B.RecordStatus == "Going"
                                 select new
                {
                    TourDateID = B.TourDateID
                }).Distinct().ToList();

                List <int?> userlist1 = new List <int?>();
                foreach (var item in goingList)
                {
                    userlist1.Add(Convert.ToInt32(item.TourDateID));
                }

                if (RemainingRecord > 0)
                {
                    var list2 = (from A in db.TicketingEventTicketConfirmation
                                 join B in db.TicketingEventsNew on A.EventID equals B.EventID into AB
                                 from B in AB.DefaultIfEmpty()
                                 join C in db.Artists on B.ArtistId equals C.ArtistID into BC
                                 from C in BC.DefaultIfEmpty()
                                 join D in db.Venue on B.VenueName equals D.VenueName into CD
                                 from D in CD.DefaultIfEmpty()
                                 join E in db.TourDate on B.EventID equals E.TicketingEventID into DE
                                 from E in DE.DefaultIfEmpty()
                                 where A.EventID > 0 && userlist1.Contains(A.TourDateID)
                                 select new ViewYourFreiendplanlst()
                    {
                        TourDateID = E.TourDateID,
                        //  EventID = A.EventID,
                        ArtistID = B.ArtistId,
                        ArtistName = C.ArtistName,
                        ImageURL = C.ImageURL,
                        BannerImage_URL = C.BannerImage_URL,
                        //StartDate = B.StartDate,
                        //StartTime = B.StartTime,
                        VenueID = D.VenueID,
                        VenueName = D.VenueName,
                        Datetime_Local = B.StartDate.Value
                    }).Distinct().OrderBy(x => x.ArtistID).Skip(0).Take(RemainingRecord).ToList();


                    foreach (var item in list2)
                    {
                        item.Going = (from G in db.UserFriends
                                      join H in db.Users on G.Matched_UserID equals H.UserID into GH
                                      from H in GH.DefaultIfEmpty()
                                      join I in db.UserGoing on H.UserID equals I.UserID into HI
                                      from I in HI.DefaultIfEmpty()
                                      where G.UserID == UserID && I.TourDateID == item.TourDateID && I.RecordStatus == "Going" && G.Matched_UserID > 0
                                      select new ViewFriendPlans()
                        {
                            Email = H.Email,
                            ImageURL = H.ImageURL,
                            ThumbnailURL = H.ThumbnailURL,
                            UserID = H.UserID,
                            UserName = H.UserName
                        }).Distinct().ToList();
                        item.GoingCount = item.Going.Count();
                        item.Date_Local = item.Datetime_Local.ToString("d");
                    }
                    _list.AddRange(list2);
                }
                return(Request.CreateResponse(HttpStatusCode.OK, JsonResponse.GetResponse(ResponseCode.Success, _list, "FriendPlans")));
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, JsonResponse.GetResponse(ResponseCode.Info, ex.Message, "FriendPlans")));
            }
        }