public ActionResult Index(OpportunitySearchHelper model) { var opportunities = _db.Opportunities.Select(o => o); if (User.IsInRole("Management") || User.IsInRole("Administrator") || User.IsInRole("Board") || User.IsInRole("Superadmin")) { //Search Engine -- Admin if (!String.IsNullOrEmpty(model.Campaign)) { opportunities = opportunities.Where(op => op.RelatedCampaign.CampaignName.Contains(model.Campaign)); } if (!String.IsNullOrEmpty(model.Opportunity)) { opportunities = opportunities.Where(op => op.OpportunityTitle.Contains(model.Opportunity)); } if (!String.IsNullOrEmpty(model.Organization)) { opportunities = opportunities.Where(op => op.RelatedOrganization.SubjectName.Contains(model.Organization) || op.RelatedOrganization.VAT.Contains(model.Organization)); } if (!String.IsNullOrEmpty(model.Address)) { opportunities = opportunities.Where(op => op.RelatedOrganization.OrganizationDetail.MainCity.Contains(model.Address)); } if (!String.IsNullOrEmpty(model.LastContactDate)) { var dateTemp = Convert.ToDateTime(model.LastContactDate); var dateTempPlus = dateTemp.AddDays(1); opportunities = opportunities.Where(op => op.LastContactDate >= dateTemp && op.LastContactDate < dateTempPlus); } if (!String.IsNullOrEmpty(model.OpportunityStatus.ToString())) { opportunities = opportunities.Where(op => op.OpportunityStatus == model.OpportunityStatus); } if (!String.IsNullOrEmpty(model.RejectReason.ToString())) { opportunities = opportunities.Where(op => op.RejectReason == model.RejectReason); } if (!String.IsNullOrEmpty(model.Priority.ToString())) { opportunities = opportunities.Where(op => op.Priority == model.Priority); } if (!String.IsNullOrEmpty(model.Assigned)) { if (model.Assigned == "1") { opportunities = opportunities.Where(op => op.IsAssigned == false); } if (model.Assigned == "2") { opportunities = opportunities.Where(op => op.IsAssigned); } } if (!String.IsNullOrEmpty(model.AssignedTo)) { opportunities = opportunities.Where(op => op.AssignedTo == model.AssignedTo); } } else { opportunities = opportunities.Where(op => op.AssignedTo == User.Identity.Name); //Search Engine -- User if (!String.IsNullOrEmpty(model.Campaign)) { opportunities = opportunities.Where(op => op.RelatedCampaign.CampaignName.Contains(model.Campaign)); } if (!String.IsNullOrEmpty(model.Opportunity)) { opportunities = opportunities.Where(op => op.OpportunityTitle.Contains(model.Opportunity)); } if (!String.IsNullOrEmpty(model.Organization)) { opportunities = opportunities.Where(op => op.RelatedOrganization.SubjectName.Contains(model.Organization) || op.RelatedOrganization.VAT.Contains(model.Organization)); } if (!String.IsNullOrEmpty(model.Address)) { opportunities = opportunities.Where(op => op.RelatedOrganization.OrganizationDetail.MainCity.Contains(model.Address)); } if (!String.IsNullOrEmpty(model.LastContactDate)) { var dateTemp = Convert.ToDateTime(model.LastContactDate); var dateTempPlus = dateTemp.AddDays(1); opportunities = opportunities.Where(op => op.LastContactDate >= dateTemp && op.LastContactDate < dateTempPlus); } if (!String.IsNullOrEmpty(model.OpportunityStatus.ToString())) { opportunities = opportunities.Where(op => op.OpportunityStatus == model.OpportunityStatus); } if (!String.IsNullOrEmpty(model.RejectReason.ToString())) { opportunities = opportunities.Where(op => op.RejectReason == model.RejectReason); } if (!String.IsNullOrEmpty(model.Priority.ToString())) { opportunities = opportunities.Where(op => op.Priority == model.Priority); } } ViewBag.SearchResults = opportunities.Count(); ViewBag.SearchResultsAssigned = opportunities.Count(op => op.IsAssigned); ViewBag.UsersAssigned = opportunities.Count(op => op.AssignedTo == User.Identity.Name); ViewBag.UsersCreated = opportunities.Count(op => op.AssignedTo == User.Identity.Name && op.OpportunityStatus == Opportunity.OpportunityStatusEnum.Start); ViewBag.UsersInContact = opportunities.Count(op => op.AssignedTo == User.Identity.Name && op.OpportunityStatus == Opportunity.OpportunityStatusEnum.Incontact); ViewBag.UsersLead = opportunities.Count(op => op.AssignedTo == User.Identity.Name && op.OpportunityStatus == Opportunity.OpportunityStatusEnum.Lead); ViewBag.UsersRejected = opportunities.Count(op => op.AssignedTo == User.Identity.Name && op.OpportunityStatus == Opportunity.OpportunityStatusEnum.Rejected); var returnModel = new OpportunityIndexViewModel() { Users = _db.Users }; if (User.IsInRole("Management") || User.IsInRole("Administrator") || User.IsInRole("Board") || User.IsInRole("Superadmin")) { returnModel.Opportunities = opportunities.OrderByDescending(op => op.Priority); return(View(returnModel)); } returnModel.Opportunities = opportunities.Where(op => op.OpportunityStatus != Models.Opportunity.OpportunityStatusEnum.Rejected).OrderByDescending(op => op.Priority); return(View(returnModel)); }
public async Task <OpportunityIndexViewModel> GetAllAsync(int pageIndex, int itemsPage, string requestId = "") { _logger.LogInformation($"RequestId: {requestId} - GetAllAsync called."); Guard.Against.Null(pageIndex, nameof(pageIndex), requestId); Guard.Against.Null(itemsPage, nameof(itemsPage), requestId); try { var listItems = (await _opportunityRepository.GetAllAsync(requestId)).ToList(); Guard.Against.Null(listItems, nameof(listItems), requestId); var vmListItems = new List <OpportunityViewModel>(); foreach (var item in listItems) { vmListItems.Add(await _opportunityHelpers.ToOpportunityViewModelAsync(item, requestId)); } if (vmListItems.Count == 0) { _logger.LogWarning($"RequestId: {requestId} - GetAllAsync no items found"); throw new NoItemsFound($"RequestId: {requestId} - Method name: GetAllAsync - No Items Found"); } //Reduce to opportunityIndexModel var vimListItems = new List <OpportunityIndexModel>(); foreach (var item in vmListItems) { var vimItem = new OpportunityIndexModel { Id = item.Id, DisplayName = item.DisplayName, Customer = item.Customer, DealSize = item.DealSize, OpenedDate = item.OpenedDate, OpportunityState = item.OpportunityState }; vimListItems.Add(vimItem); } var indexListItems = new OpportunityIndexViewModel { ItemsList = vimListItems, PaginationInfo = new PaginationInfoViewModel { ActualPage = 1, ItemsPerPage = itemsPage, TotalItems = 0, TotalPages = 0, Next = String.Empty, Previous = String.Empty } }; return(indexListItems); } catch (Exception ex) { _logger.LogError($"RequestId: {requestId} - GetAllAsync Service Exception: {ex}"); throw new ResponseException($"RequestId: {requestId} - GetAllAsync Service Exception: {ex}"); } }