Example #1
0
        public List <ExhibitResponse> GetExhibitInTopic(int id)
        {
            var topic = _unitOfWork.Repository <Topic>().GetById(id);

            if (topic == null)
            {
                throw new Exception("Can not found Topic!!!");
            }

            var topicTrans = _unitOfWork.Repository <eTourGuide.Data.Entity.ExhibitInTopic>().GetAll()
                             .Where(x => x.Status == true &&
                                    x.TopicId == id &&
                                    DateTime.Now >= x.Topic.StartDate);

            List <ExhibitResponse> listExhibit = new List <ExhibitResponse>();

            if (topicTrans.Count() > 0)
            {
                foreach (var item in topicTrans)
                {
                    ExhibitResponse obj = new ExhibitResponse()
                    {
                        Id             = item.Exhibit.Id,
                        Name           = item.Exhibit.Name,
                        Description    = item.Exhibit.Description,
                        NameEng        = item.Exhibit.NameEng,
                        DescriptionEng = item.Exhibit.DescriptionEng,
                        Image          = item.Exhibit.Image,
                    };
                    listExhibit.Add(obj);
                }
            }
            return(listExhibit);
        }
Example #2
0
        public List <ExhibitResponse> GetAllExhibitsForUser()
        {
            var rs = _unitOfWork.Repository <Exhibit>().GetAll().Where(e => e.Status == (int)ExhibitsStatus.Status.Added &&
                                                                       e.IsDelete == false).AsQueryable();

            List <ExhibitResponse> listExhibitResponse = new List <ExhibitResponse>();

            foreach (var item in rs)
            {
                if (item.ExhibitInEvents.Where(exInEvt => exInEvt.Status == true &&
                                               exInEvt.Event.Status == (int)EventStatus.Status.Active &&
                                               DateTime.Now >= exInEvt.Event.StartDate &&
                                               DateTime.Now <= exInEvt.Event.EndDate).FirstOrDefault() != null

                    || item.ExhibitInTopics.Where(exInTopic => exInTopic.Status == true &&
                                                  exInTopic.Topic.Status == (int)TopicStatus.Status.Active &&
                                                  DateTime.Now >= exInTopic.Topic.StartDate).FirstOrDefault() != null)
                {
                    ExhibitResponse exhibitResponse = new ExhibitResponse()
                    {
                        Id             = item.Id,
                        Name           = item.Name,
                        Description    = item.Description,
                        NameEng        = item.NameEng,
                        DescriptionEng = item.DescriptionEng,
                        Image          = item.Image,
                        //Rating = (float)item.Rating,
                        //TotalFeedback = count
                    };
                    listExhibitResponse.Add(exhibitResponse);
                }
            }
            return(listExhibitResponse.ToList());
        }
Example #3
0
        public List <ExhibitResponse> GetExhibitInEvent(int id)
        {
            var evt = _unitOfWork.Repository <Event>().GetById(id);

            if (evt == null)
            {
                throw new Exception("Can not found Event!!!");
            }

            var evtTrans = _unitOfWork.Repository <ExhibitInEvent>().GetAll().Where(x => x.Status == true &&
                                                                                    x.EventId == id &&
                                                                                    DateTime.Now >= x.Event.StartDate &&
                                                                                    DateTime.Now <= x.Event.EndDate);
            List <ExhibitResponse> listExhibit = new List <ExhibitResponse>();

            if (evtTrans.Count() > 0)
            {
                foreach (var item in evtTrans)
                {
                    ExhibitResponse obj = new ExhibitResponse()
                    {
                        Id             = item.Exhibit.Id,
                        Name           = item.Exhibit.Name,
                        Description    = item.Exhibit.Description,
                        NameEng        = item.Exhibit.NameEng,
                        DescriptionEng = item.Exhibit.DescriptionEng,
                        Image          = item.Exhibit.Image,
                    };
                    listExhibit.Add(obj);
                }
            }
            return(listExhibit);
        }
Example #4
0
        public List <ExhibitResponse> GetExhibitFromRoom(int roomId)
        {
            //check ở nhánh Event
            var exhibitInEvent = _unitOfWork.Repository <eTourGuide.Data.Entity.ExhibitInEvent>()
                                 .GetAll().Where(x => x.Event.RoomId == roomId &&
                                                 x.Status == true &&
                                                 x.Event.Status == (int)EventStatus.Status.Active &&
                                                 DateTime.Now >= x.Event.StartDate &&
                                                 DateTime.Now <= x.Event.EndDate);

            List <ExhibitResponse> listExhibitResponse = new List <ExhibitResponse>();

            if (exhibitInEvent.Count() > 0)
            {
                foreach (var item in exhibitInEvent)
                {
                    ExhibitResponse obj = new ExhibitResponse()
                    {
                        Id             = item.ExhibitId,
                        Name           = item.Exhibit.Name,
                        Description    = item.Exhibit.Description,
                        NameEng        = item.Exhibit.NameEng,
                        DescriptionEng = item.Exhibit.DescriptionEng,
                        Image          = item.Exhibit.Image,
                    };
                    listExhibitResponse.Add(obj);
                }
            }


            //check ở nhánh Topic
            var exhibitInTopic = _unitOfWork.Repository <eTourGuide.Data.Entity.ExhibitInTopic>()
                                 .GetAll().Where(x => x.Topic.RoomId == roomId &&
                                                 x.Status == true &&
                                                 x.Topic.Status == (int)TopicStatus.Status.Active &&
                                                 DateTime.Now >= x.Topic.StartDate);

            if (exhibitInTopic.Count() > 0)
            {
                foreach (var item in exhibitInTopic)
                {
                    ExhibitResponse obj = new ExhibitResponse()
                    {
                        Id             = item.ExhibitId,
                        Name           = item.Exhibit.Name,
                        Description    = item.Exhibit.Description,
                        NameEng        = item.Exhibit.NameEng,
                        DescriptionEng = item.Exhibit.DescriptionEng,
                        Image          = item.Exhibit.Image,
                    };
                    listExhibitResponse.Add(obj);
                }
            }
            return(listExhibitResponse);
        }
Example #5
0
        //search exhibits by name
        List <ExhibitResponse> SearchExhibitByName(string language, string name)
        {
            var    exhibit    = new List <Exhibit>();
            string vietnamese = "vi";
            string english    = "en";

            if (language == vietnamese)
            {
                exhibit = _unitOfWork.Repository <Exhibit>().GetAll().Where(e => e.Name.Contains(name) && e.IsDelete == false && e.Status == 1).AsQueryable().ToList();
            }
            else if (language == english)
            {
                exhibit = _unitOfWork.Repository <Exhibit>().GetAll().Where(e => e.NameEng.Contains(name) && e.IsDelete == false && e.Status == 1).AsQueryable().ToList();
            }

            List <ExhibitResponse> listExhibit = new List <ExhibitResponse>();

            if (exhibit != null)
            {
                foreach (var item in exhibit)
                {
                    if (item.ExhibitInEvents.Where(exInEvt => exInEvt.Status == true &&
                                                   exInEvt.Event.Status == (int)EventStatus.Status.Active &&
                                                   DateTime.Now >= exInEvt.Event.StartDate &&
                                                   DateTime.Now <= exInEvt.Event.EndDate).FirstOrDefault() != null
                        ||
                        item.ExhibitInTopics.Where(exInTopic => exInTopic.Status == true &&
                                                   exInTopic.Topic.Status == (int)TopicStatus.Status.Active &&
                                                   DateTime.Now >= exInTopic.Topic.StartDate).FirstOrDefault() != null)
                    {
                        ExhibitResponse obj = new ExhibitResponse()
                        {
                            Id             = item.Id,
                            Name           = item.Name,
                            Description    = item.Description,
                            NameEng        = item.NameEng,
                            DescriptionEng = item.DescriptionEng,
                            Image          = item.Image,
                            //Rating = (double)item.Rating,
                            //TotalFeedback = count
                        };
                        listExhibit.Add(obj);
                    }
                }
            }
            return(listExhibit);
        }
Example #6
0
        public List <ExhibitResponse> SearchExhibitForAdmin(string name)
        {
            List <ExhibitResponse> listExhibitResponse = new List <ExhibitResponse>();

            if (String.IsNullOrEmpty(name))
            {
                listExhibitResponse = GetAllExhibitForAdmin();
                return(listExhibitResponse);
            }
            string statusConvert = "";
            var    exhibit       = _unitOfWork.Repository <Exhibit>().GetAll().Where(e => e.Name.Contains(name) && e.IsDelete == false).AsQueryable();

            foreach (var item in exhibit)
            {
                if (item.Status == (int)ExhibitsStatus.Status.Ready)
                {
                    statusConvert = "Sẵn sàng";
                }
                else if (item.Status == (int)ExhibitsStatus.Status.Added)
                {
                    statusConvert = "Đã được thêm";
                }

                DateTime createDate = (DateTime)item.CreateDate;

                ExhibitResponse exhibitResponse = new ExhibitResponse()
                {
                    Id             = item.Id,
                    Name           = item.Name,
                    Description    = item.Description,
                    NameEng        = item.NameEng,
                    DescriptionEng = item.DescriptionEng,
                    Image          = item.Image,
                    CreateDate     = createDate.Date.ToString("yyyy-MM-dd"),
                    Status         = statusConvert,
                    Duration       = (TimeSpan)item.Duration,
                    isDelete       = (bool)item.IsDelete
                };
                listExhibitResponse.Add(exhibitResponse);
            }
            return(listExhibitResponse.ToList());
        }
Example #7
0
        public List <ExhibitResponse> GetExhbitForClosedTopic(int topicId)
        {
            var exhibitInTopic = _unitOfWork.Repository <ExhibitInTopic>().GetAll()
                                 .Where(e => e.Status == false && e.TopicId == topicId).AsQueryable();

            List <ExhibitResponse> listRs = new List <ExhibitResponse>();
            string statusConvert          = "";

            if (exhibitInTopic.Count() > 0)
            {
                foreach (var item in exhibitInTopic)
                {
                    if (item.Exhibit.Status == (int)ExhibitsStatus.Status.Ready)
                    {
                        statusConvert = "Sẵn sàng";
                    }
                    else if (item.Exhibit.Status == (int)ExhibitsStatus.Status.Added)
                    {
                        statusConvert = "Đã được thêm";
                    }

                    DateTime createDate = (DateTime)item.Exhibit.CreateDate;

                    ExhibitResponse exhibitResponse = new ExhibitResponse()
                    {
                        Id             = item.Exhibit.Id,
                        Name           = item.Exhibit.Name,
                        Description    = item.Exhibit.Description,
                        NameEng        = item.Exhibit.NameEng,
                        DescriptionEng = item.Exhibit.DescriptionEng,
                        Image          = item.Exhibit.Image,
                        CreateDate     = createDate.Date.ToString("yyyy-MM-dd"),
                        Status         = statusConvert,
                        Duration       = (TimeSpan)item.Exhibit.Duration,
                        isDelete       = (bool)item.Exhibit.IsDelete
                    };
                    listRs.Add(exhibitResponse);
                }
            }
            return(listRs.ToList());
        }
Example #8
0
        public List <ExhibitResponse> GetNewExhibit()
        {
            int numberOfExhibitToDisplays = 20;
            var rs = _unitOfWork.Repository <Exhibit>().GetAll().Where(e => e.Status == (int)ExhibitsStatus.Status.Added && e.IsDelete == false).AsQueryable();

            rs = rs.OrderByDescending(exhibit => exhibit.CreateDate);
            int count = 0;
            List <ExhibitResponse> listExhibitResponse = new List <ExhibitResponse>();

            foreach (var item in rs)
            {
                if (item.ExhibitInEvents.Where(exInEvt => exInEvt.Status == true &&
                                               exInEvt.Event.Status == (int)EventStatus.Status.Active &&
                                               DateTime.Now >= exInEvt.Event.StartDate &&
                                               DateTime.Now <= exInEvt.Event.EndDate).FirstOrDefault() != null

                    || item.ExhibitInTopics.Where(exInTopic => exInTopic.Status == true &&
                                                  exInTopic.Topic.Status == (int)TopicStatus.Status.Active &&
                                                  DateTime.Now >= exInTopic.Topic.StartDate).FirstOrDefault() != null)
                {
                    ExhibitResponse exhibitResponse = new ExhibitResponse()
                    {
                        Id             = item.Id,
                        Name           = item.Name,
                        Description    = item.Description,
                        NameEng        = item.NameEng,
                        DescriptionEng = item.DescriptionEng,
                        Image          = item.Image,
                        //Rating = (float)item.Rating,
                    };
                    listExhibitResponse.Add(exhibitResponse);
                    count = count + 1;
                    if (count == numberOfExhibitToDisplays)
                    {
                        break;
                    }
                }
            }
            return(listExhibitResponse.ToList());
        }
Example #9
0
        public List <ExhibitResponse> GetAvailableExhibit()
        {
            var rs = _unitOfWork.Repository <Exhibit>().GetAll().Where(e => e.Status == (int)ExhibitsStatus.Status.Ready && e.IsDelete == false).AsQueryable();
            List <ExhibitResponse> listExhibitResponse = new List <ExhibitResponse>();

            foreach (var item in rs)
            {
                DateTime        createDate      = (DateTime)item.CreateDate;
                ExhibitResponse exhibitResponse = new ExhibitResponse()
                {
                    Id             = item.Id,
                    Name           = item.Name,
                    Description    = item.Description,
                    NameEng        = item.NameEng,
                    DescriptionEng = item.DescriptionEng,
                    Image          = item.Image,
                    CreateDate     = createDate.Date.ToString("yyyy-MM-dd"),
                    Status         = "Sẵn sàng",
                    Duration       = (TimeSpan)item.Duration
                };
                listExhibitResponse.Add(exhibitResponse);
            }
            return(listExhibitResponse.ToList());
        }
Example #10
0
        public List <ExhibitResponse> GetHightLightExhibit()
        {
            List <ExhibitResponse> listResponse = new List <ExhibitResponse>();

            //lấy ra list event
            var listExhibitInEvent = _unitOfWork.Repository <ExhibitInEvent>().GetAll().Where(e => e.Status == true &&
                                                                                              e.Event.Status == (int)EventStatus.Status.Active &&
                                                                                              e.Event.Rating >= 4 &&
                                                                                              DateTime.Now >= e.Event.StartDate &&
                                                                                              DateTime.Now <= e.Event.EndDate).AsQueryable();

            //thêm vào list exhibit
            if (listExhibitInEvent != null)
            {
                foreach (var item in listExhibitInEvent)
                {
                    ExhibitResponse exhibit = new ExhibitResponse()
                    {
                        Id             = item.Exhibit.Id,
                        Name           = item.Exhibit.Name,
                        Description    = item.Exhibit.Description,
                        NameEng        = item.Exhibit.NameEng,
                        DescriptionEng = item.Exhibit.DescriptionEng,
                        Image          = item.Exhibit.Image,
                        Rating         = (double)item.Event.Rating,
                        Duration       = (TimeSpan)item.Exhibit.Duration
                    };
                    listResponse.Add(exhibit);
                }
            }


            //lấy ra list topic
            var listExhibitInTopic = _unitOfWork.Repository <ExhibitInTopic>().GetAll().Where(t => t.Status == true &&
                                                                                              t.Topic.Status == (int)TopicStatus.Status.Active &&
                                                                                              t.Topic.Rating >= 4 &&
                                                                                              DateTime.Now >= t.Topic.StartDate).AsQueryable();

            //thêm vào list exhibit
            if (listExhibitInTopic != null)
            {
                foreach (var item in listExhibitInTopic)
                {
                    ExhibitResponse exhibit = new ExhibitResponse()
                    {
                        Id             = item.Exhibit.Id,
                        Name           = item.Exhibit.Name,
                        Description    = item.Exhibit.Description,
                        NameEng        = item.Exhibit.NameEng,
                        DescriptionEng = item.Exhibit.DescriptionEng,
                        Image          = item.Exhibit.Image,
                        Rating         = (double)item.Topic.Rating
                    };
                    listResponse.Add(exhibit);
                }
            }


            //sort list theo rating
            listResponse = listResponse.OrderByDescending(response => response.Rating).ToList();
            return(listResponse.ToList());
        }
Example #11
0
        //dựa vào thời gian user nhập vào để đưa ra list exhibit phù hợp
        public async Task <List <ExhibitResponse> > SuggestExhibitFromDuration(TimeSpan time)
        {
            List <ExhibitResponse> listResponse = new List <ExhibitResponse>();

            TimeSpan duration = new TimeSpan(00, 00, 00);

            if (duration == time)
            {
                listResponse = _exhibitService.GetHightLightExhibit();
                return(listResponse);
            }


            //tạo list chứa event và topic để sort theo rating
            List <SortEventAndTopicRespnse> listEventAndTopic = new List <SortEventAndTopicRespnse>();

            //lấy ra list topic
            var listTopic = _unitOfWork.Repository <Topic>().GetAll().Where(t => t.Status == (int)TopicStatus.Status.Active &&
                                                                            DateTime.Now >= t.StartDate).ToList();

            if (listTopic.Count() > 0)
            {
                foreach (var item in listTopic)
                {
                    SortEventAndTopicRespnse sortEventAndTopicRespnse = new SortEventAndTopicRespnse()
                    {
                        Id     = item.Id,
                        Rating = (double)item.Rating,
                        RoomId = (int)item.RoomId,
                        Type   = "Topic"
                    };
                    listEventAndTopic.Add(sortEventAndTopicRespnse);
                }
            }

            //lấy ra list event
            var listEvent = _unitOfWork.Repository <Event>().GetAll().Where(e => e.Status == (int)EventStatus.Status.Active &&
                                                                            DateTime.Now >= e.StartDate &&
                                                                            DateTime.Now <= e.EndDate).ToList();

            if (listEvent.Count() > 0)
            {
                foreach (var item in listEvent)
                {
                    SortEventAndTopicRespnse sortEventAndTopicRespnse = new SortEventAndTopicRespnse()
                    {
                        Id     = item.Id,
                        Rating = (double)item.Rating,
                        RoomId = (int)item.RoomId,
                        Type   = "Event"
                    };
                    listEventAndTopic.Add(sortEventAndTopicRespnse);
                }
            }

            //sort list theo rating
            listEventAndTopic = listEventAndTopic.OrderByDescending(sort => sort.Rating).ToList();


            List <int> roomId = new List <int>();

            TimeSpan timeToVisitExhibit = new TimeSpan(00, 00, 00);
            TimeSpan timeToMove         = new TimeSpan(00, 00, 00);

            //ShortestPathAndSuggestRouteService shortestPathAndSuggestRoute = new ShortestPathAndSuggestRouteService(_unitOfWork, _roomService);

            if (listEventAndTopic.Count() > 0)
            {
                foreach (var item in listEventAndTopic)
                {
                    if (item.Type == "Topic")
                    {
                        var exhibitInTopic = _unitOfWork.Repository <ExhibitInTopic>()
                                             .GetAll().Where(e => e.TopicId == item.Id).ToList();

                        roomId.Add(item.RoomId);
                        if (exhibitInTopic.Count() > 0)
                        {
                            foreach (var item2 in exhibitInTopic)
                            {
                                ExhibitResponse exhibitResponse = new ExhibitResponse()
                                {
                                    Id             = item2.Exhibit.Id,
                                    Name           = item2.Exhibit.Name,
                                    Description    = item2.Exhibit.Description,
                                    NameEng        = item2.Exhibit.NameEng,
                                    DescriptionEng = item2.Exhibit.DescriptionEng,
                                    Image          = item2.Exhibit.Image,
                                    Rating         = (double)item2.Topic.Rating,
                                    Duration       = (TimeSpan)item2.Exhibit.Duration
                                };
                                listResponse.Add(exhibitResponse);

                                //xét điều kiện thời gian xem và thời gian di chuyển
                                timeToVisitExhibit = (TimeSpan)(timeToVisitExhibit + item2.Exhibit.Duration);
                                timeToMove         = await _shortestPathAndSuggestRouteService.GetTimeToMoveFromRoom(roomId);

                                duration = timeToMove + timeToVisitExhibit;
                                if (duration >= time)
                                {
                                    return(listResponse);
                                }
                            }
                        }
                    }

                    if (item.Type == "Event")
                    {
                        var exhibitInEvent = _unitOfWork.Repository <ExhibitInEvent>()
                                             .GetAll().Where(e => e.EventId == item.Id).ToList();

                        roomId.Add(item.RoomId);
                        if (exhibitInEvent.Count() > 0)
                        {
                            foreach (var item2 in exhibitInEvent)
                            {
                                ExhibitResponse exhibitResponse = new ExhibitResponse()
                                {
                                    Id             = item2.Exhibit.Id,
                                    Name           = item2.Exhibit.Name,
                                    Description    = item2.Exhibit.Description,
                                    NameEng        = item2.Exhibit.NameEng,
                                    DescriptionEng = item2.Exhibit.DescriptionEng,
                                    Image          = item2.Exhibit.Image,
                                    Rating         = (double)item2.Event.Rating,
                                    Duration       = (TimeSpan)item2.Exhibit.Duration
                                };
                                listResponse.Add(exhibitResponse);
                                //xét điều kiện thời gian xem và thời gian di chuyển
                                timeToVisitExhibit = (TimeSpan)(timeToVisitExhibit + item2.Exhibit.Duration);
                                timeToMove         = await _shortestPathAndSuggestRouteService.GetTimeToMoveFromRoom(roomId);

                                duration = timeToMove + timeToVisitExhibit;
                                if (duration >= time)
                                {
                                    return(listResponse);
                                }
                            }
                        }
                    }
                }
            }
            return(listResponse);
        }