public IEnumerable <InteractionHistoryViewModel> GetInteractionHistoryByCustomer(SearchViewModel model) { var findCus = _customerService.Queryable().Where(x => x.PhoneNumber == model.PhoneNumber && x.Delete == false).FirstOrDefault(); if (findCus != null) { var result = new List <InteractionHistoryViewModel>(); //result1.CustomerName = findCus.Name; //result1.CustomerPhone = findCus.PhoneNumber; var listEvent = _eventService.Queryable().Include(x => x.DetailEvents).Include(x => x.InteractionHistories).Include(x => x.ReminderNotes).Where(x => x.Customer.Id == findCus.Id).ToList(); if (listEvent.Count > 0) { foreach (var item in listEvent) { var history = Queryable().Where(x => x.Event.Id == item.Id).ToList(); if (history != null) { foreach (var itemHistory in history) { var Object1 = new InteractionHistoryViewModel(); Object1.Type = itemHistory.Type; Object1.ID = itemHistory.Id; Object1.Note = item.Note; Object1.CreatDate = itemHistory.CreatDate; Object1.EmployeeCall = itemHistory.EmployeeCall; Object1.EmployeeID = itemHistory.EmployeeID; Object1.EventCode = item.Code; Object1.Status = item.Status; Object1.EventNote = item.Note; Object1.Note = itemHistory.Note; Object1.EventPurpose = _eventPurposeService.Queryable() .Where(t => t.Delete == false && t.Id == item.EventPurposeId).FirstOrDefault().Name; Object1.EventType = _eventTypeService.Queryable() .Where(t => t.Delete == false && t.Id == item.EventTypeId).FirstOrDefault().Name; if (item.DetailEvents.Count > 0) { Object1.Serial = item.DetailEvents.FirstOrDefault().Serial; Object1.DetailEventNote = item.DetailEvents.FirstOrDefault().Note; } result.Add(Object1); } } } foreach (var item in result.ToList()) { } } else { throw new Exception("Không tìm thấy lịch sử tương tác"); } return(result); } else { throw new Exception("Không tìm thấy khách hàng"); } }
public IQueryable <EventViewModel> GetEventForPishop(SearchViewModel model) { var result = Queryable().Where(x => x.Delete == false && x.Tags.Any(y => y.Departments.Id == Config.PishopID) && ((!model.From.HasValue) || (DbFunctions.TruncateTime(x.CreatDate) >= DbFunctions.TruncateTime(model.From))) && ((!model.To.HasValue) || (DbFunctions.TruncateTime(x.CreatDate) <= DbFunctions.TruncateTime(model.To)))) .Select(x => new EventViewModel() { CreatDate = x.CreatDate, ID = x.Id, Code = x.Code, CustomerID = x.Customer.Id, CustomerName = x.Customer.Name, Address = x.Customer.Address, PhoneNumber = x.Customer.PhoneNumber, EventPurposeID = x.EventPurposeId, EventTypeID = x.EventTypeId, Status = x.Status, StatusSeen = x.StatusSeen, UserName = x.UserAccount.UserName, Note = x.Note, Tags = x.Tags.Select(t => new TagViewModel { ID = t.Id, NameTag = t.NameTag, CodeTag = t.CodeTag, DepartmentName = t.Departments.Name }).ToList(), DetailEvents = x.DetailEvents.Select(t => new DetailEventViewModel { ID = t.Id, Serial = t.Serial, CreatDate = t.CreatDate, ProductCode = t.ProductType.Code, ProductName = t.ProductType.Name, AgencySold = t.AgencySold, DateSold = t.DateSold, AssociateName = t.AssociateName, EventCode = t.Event.Code, EventID = t.Event.Id, Note = t.Note }).ToList(), ReminderNotes = x.ReminderNotes.Select(t => new ReminderNoteViewModel { Note = t.Note, CreatDate = t.CreatDate, Serial = t.Serial, ID = t.Id, ReminderDate = t.ReminderDate, }).ToList(), InteractionHistories = x.InteractionHistories.Select(t => new InteractionHistoryViewModel { ID = t.Id, Type = t.Type, Note = t.Note, CreatDate = t.CreatDate, EmployeeCall = t.EmployeeCall, EmployeeID = t.EmployeeID, EventCode = t.Event.Code }).ToList() }).ToList(); foreach (var item in result) { item.EventPurposeName = _eventPurposeService.Queryable() .Where(t => t.Delete == false && t.Id == item.EventPurposeID).FirstOrDefault().Name; item.EventTypeName = _eventTypeService.Queryable() .Where(t => t.Delete == false && t.Id == item.EventTypeID).FirstOrDefault().Name; } return(result.AsQueryable()); }