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); }
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()); }
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); }
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); }
//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); }
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()); }
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()); }
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()); }
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()); }
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()); }
//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); }