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));
        }
Ejemplo n.º 2
0
        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}");
            }
        }