예제 #1
0
        // GET: Stats/CallCenterDaily
        public ActionResult CallCenterDaily(string search)
        {
            var agentActivities = from a in _db.ActivityLogs
                                  where a.InsertDate >= DateTime.Today
                                  group a by a.User into ga
                                  select ga;
            var departmentActivities = from a in _db.ActivityLogs
                                       where a.InsertDate >= DateTime.Today
                                       group a by a.Department into ga
                                       select ga;
            var successfulCalls = _db.ActivityLogs.Where(a =>
                                                         a.ActivityType == ActivityLog.ActivityTypeEnum.Succall ||
                                                         a.ActivityType == ActivityLog.ActivityTypeEnum.Succalshort);
            var successfulCallsSuspicious   = successfulCalls.Where(a => a.IsSuspiciousActivity);
            var unsuccessfulCalls           = _db.ActivityLogs.Where(a => a.ActivityType == ActivityLog.ActivityTypeEnum.Unsuccal);
            var unsuccessfulCallsSuspicious = unsuccessfulCalls.Where(a => a.IsSuspiciousActivity);
            var mailChange               = _db.ActivityLogs.Where(a => a.ActivityType == ActivityLog.ActivityTypeEnum.Mailchange);
            var resend                   = _db.ActivityLogs.Where(a => a.ActivityType == ActivityLog.ActivityTypeEnum.Resend);
            var deliveryMail             = _db.ActivityLogs.Where(a => a.ActivityType == ActivityLog.ActivityTypeEnum.Email);
            var ticketsAssigned          = _db.ActivityLogs.Where(a => a.ActivityType == ActivityLog.ActivityTypeEnum.Ticketassign);
            var acquiredEmails           = _db.ActivityLogs.Where(al => al.Description.Contains("@") && al.Description.Contains("nova informacija o preuzimanju"));
            var acquiredTelephoneNumbers = _db.ActivityLogs.Where(al =>
                                                                  al.Description.Contains("- broj mobitela") || al.Description.Contains("- broj telefona"));
            var activities             = new List <CallCenterDaily>();
            var activitiesByDepartment = new List <CallCenterDailyByDepartment>();

            if (!string.IsNullOrEmpty(search))
            {
                var searchDate     = Convert.ToDateTime(search);
                var searchDatePlus = searchDate.AddDays(1);
                successfulCalls             = successfulCalls.Where(a => (a.InsertDate >= searchDate) && (a.InsertDate < searchDatePlus));
                successfulCallsSuspicious   = successfulCallsSuspicious.Where(a => (a.InsertDate >= searchDate) && (a.InsertDate < searchDatePlus));
                unsuccessfulCalls           = unsuccessfulCalls.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));
                unsuccessfulCallsSuspicious = unsuccessfulCalls.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));
                mailChange               = mailChange.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));
                resend                   = resend.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));
                deliveryMail             = deliveryMail.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));
                ticketsAssigned          = ticketsAssigned.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));
                acquiredEmails           = acquiredEmails.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));
                acquiredTelephoneNumbers = acquiredTelephoneNumbers.Where(t => (t.InsertDate >= searchDate) && (t.InsertDate < searchDatePlus));

                agentActivities = from a in _db.ActivityLogs
                                  where (a.InsertDate >= searchDate) && (a.InsertDate < searchDatePlus)
                                  group a by a.User into ga
                                  select ga;
                departmentActivities = from a in _db.ActivityLogs
                                       where (a.InsertDate >= searchDate) && (a.InsertDate < searchDatePlus)
                                       group a by a.Department into ga
                                       select ga;
                foreach (var day in agentActivities)
                {
                    var dailyActivities = new CallCenterDaily
                    {
                        Agent = day.Key,
                        NumberSuccessfulCalls             = successfulCalls.Count(a => a.User == day.Key),
                        NumberSuccessfulCallsSuspicious   = successfulCallsSuspicious.Count(a => a.User == day.Key),
                        NumberUnsuccessfulCalls           = unsuccessfulCalls.Count(a => a.User == day.Key),
                        NumberUnsuccessfulCallsSuspicious = unsuccessfulCallsSuspicious.Count(a => a.User == day.Key),
                        NumberMailchange               = mailChange.Count(a => a.User == day.Key),
                        NumberResend                   = resend.Count(a => a.User == day.Key),
                        NumberMail                     = deliveryMail.Count(a => a.User == day.Key),
                        NumberTicketsAssigned          = ticketsAssigned.Count(a => a.User == day.Key),
                        NumberAcquiredEmails           = acquiredEmails.Count(a => a.User == day.Key),
                        NumberAcquiredTelephoneNumbers = acquiredTelephoneNumbers.Count(a => a.User == day.Key)
                    };
                    activities.Add(dailyActivities);
                }
                foreach (var department in departmentActivities)
                {
                    var dailyActivitiesByDepartment = new CallCenterDailyByDepartment
                    {
                        Department              = department.Key,
                        NumberSuccessfulCalls   = successfulCalls.Count(a => a.Department == department.Key),
                        NumberUnsuccessfulCalls = unsuccessfulCalls.Count(a => a.Department == department.Key),
                        NumberMailchange        = mailChange.Count(a => a.Department == department.Key),
                        NumberResend            = resend.Count(a => a.Department == department.Key),
                        NumberMail              = deliveryMail.Count(a => a.Department == department.Key)
                    };
                    activitiesByDepartment.Add(dailyActivitiesByDepartment);
                }
            }
            else
            {
                successfulCalls             = successfulCalls.Where(a => a.InsertDate >= DateTime.Today);
                successfulCallsSuspicious   = successfulCallsSuspicious.Where(a => a.InsertDate >= DateTime.Today);
                unsuccessfulCalls           = unsuccessfulCalls.Where(t => t.InsertDate >= DateTime.Today);
                unsuccessfulCallsSuspicious = unsuccessfulCallsSuspicious.Where(a => a.InsertDate >= DateTime.Today);
                mailChange               = mailChange.Where(t => t.InsertDate >= DateTime.Today);
                resend                   = resend.Where(t => t.InsertDate >= DateTime.Today);
                deliveryMail             = deliveryMail.Where(t => t.InsertDate >= DateTime.Today);
                ticketsAssigned          = ticketsAssigned.Where(t => t.InsertDate >= DateTime.Today);
                acquiredEmails           = acquiredEmails.Where(t => t.InsertDate >= DateTime.Today);
                acquiredTelephoneNumbers = acquiredTelephoneNumbers.Where(t => t.InsertDate >= DateTime.Today);
                foreach (var day in agentActivities)
                {
                    var dailyActivities = new CallCenterDaily
                    {
                        Agent = day.Key,
                        NumberSuccessfulCalls             = successfulCalls.Count(a => a.User == day.Key),
                        NumberSuccessfulCallsSuspicious   = successfulCallsSuspicious.Count(a => a.User == day.Key),
                        NumberUnsuccessfulCalls           = unsuccessfulCalls.Count(a => a.User == day.Key),
                        NumberUnsuccessfulCallsSuspicious = unsuccessfulCallsSuspicious.Count(a => a.User == day.Key),
                        NumberMailchange               = mailChange.Count(a => a.User == day.Key),
                        NumberResend                   = resend.Count(a => a.User == day.Key),
                        NumberMail                     = deliveryMail.Count(a => a.User == day.Key),
                        NumberTicketsAssigned          = ticketsAssigned.Count(a => a.User == day.Key),
                        NumberAcquiredEmails           = acquiredEmails.Count(a => a.User == day.Key),
                        NumberAcquiredTelephoneNumbers = acquiredTelephoneNumbers.Count(a => a.User == day.Key)
                    };
                    activities.Add(dailyActivities);
                }
                foreach (var department in departmentActivities)
                {
                    var dailyActivitiesByDepartment = new CallCenterDailyByDepartment
                    {
                        Department              = department.Key,
                        NumberSuccessfulCalls   = successfulCalls.Count(a => a.Department == department.Key),
                        NumberUnsuccessfulCalls = unsuccessfulCalls.Count(a => a.Department == department.Key),
                        NumberMailchange        = mailChange.Count(a => a.Department == department.Key),
                        NumberResend            = resend.Count(a => a.Department == department.Key),
                        NumberMail              = deliveryMail.Count(a => a.Department == department.Key)
                    };
                    activitiesByDepartment.Add(dailyActivitiesByDepartment);
                }
            }

            var model = new CallCenterDailyStatsViewModel
            {
                Activities                     = activities.AsQueryable(),
                ActivitiesByDepartment         = activitiesByDepartment.AsQueryable(),
                SumSuccessfulCalls             = successfulCalls.Count(),
                SumSuccessfulCallsSuspicious   = successfulCallsSuspicious.Count(),
                SumUnsuccessfulCalls           = unsuccessfulCalls.Count(),
                SumUnsuccessfulCallsSuspicious = unsuccessfulCallsSuspicious.Count(),
                SumMailchange                  = mailChange.Count(),
                SumResend                   = resend.Count(),
                SumSentMail                 = deliveryMail.Count(),
                SumTicketsAssigned          = ticketsAssigned.Count(),
                SumAcquiredEmails           = acquiredEmails.Count(),
                SumAcquiredTelephoneNumbers = acquiredTelephoneNumbers.Count()
            };

            return(View(model));
        }
예제 #2
0
        //private readonly ApplicationDbContext _db = new ApplicationDbContext();

        public ActionResult Index()
        {
            #region Old INA Campaign Procedures
            //var campaignIna = (from c in _db.Campaigns
            //                where c.CampaignId == 1
            //                select c).First();
            //var opportunities = (from o in _db.Opportunities
            //                     where o.RelatedCampaignId == 1
            //                     select o);
            //var leads = (from l in _db.Leads
            //             where l.RelatedCampaignId == 1
            //             select l);

            //var countModel = new GeneralCampaignStatusViewModelCount
            //{
            //    NumberOfOpportunitiesCreated = opportunities.Count(),
            //    NumberOfOpportunitiesInProgress = opportunities.Count(o => o.OpportunityStatus == Opportunity.OpportunityStatusEnum.Start || o.OpportunityStatus == Opportunity.OpportunityStatusEnum.Arrangemeeting || o.OpportunityStatus == Opportunity.OpportunityStatusEnum.Incontact || o.OpportunityStatus == Opportunity.OpportunityStatusEnum.Processdifficulties),
            //    NumberOfOpportunitiesUser = opportunities.Count(o => o.OpportunityStatus == Opportunity.OpportunityStatusEnum.Meruser),
            //    NumberOfOpportunitiesToLead = opportunities.Count(o => o.OpportunityStatus == Opportunity.OpportunityStatusEnum.Lead),
            //    NumberOfOpportunitiesRejected = opportunities.Count(o => o.OpportunityStatus == Opportunity.OpportunityStatusEnum.Rejected),
            //    NumberOfLeadsCreated = leads.Count(),
            //    NumberOfLeadsInProgress = leads.Count(l => l.LeadStatus == Lead.LeadStatusEnum.Incontact || l.LeadStatus == Lead.LeadStatusEnum.Meeting || l.LeadStatus == Lead.LeadStatusEnum.Start),
            //    NumberOfLeadsMeetings = leads.Count(l => l.LeadStatus == Lead.LeadStatusEnum.Meeting),
            //    NumberOfLeadsQuotes = leads.Count(l => l.LeadStatus == Lead.LeadStatusEnum.Quotesent),
            //    NumberOfLeadsRejected = leads.Count(l => l.LeadStatus == Lead.LeadStatusEnum.Rejected),
            //    NumberOfLeadsAccepted = leads.Count(l => l.LeadStatus == Lead.LeadStatusEnum.Accepted)
            //};

            //var modelIna = new GeneralCampaignStatusViewModel
            //{
            //    RelatedCampaignId = 6,
            //    RelatedCampaignName = campaignIna.CampaignName,
            //    NumberOfOpportunitiesCreated = countModel.NumberOfOpportunitiesCreated,
            //    NumberOfOpportunitiesInProgress = countModel.NumberOfOpportunitiesInProgress,
            //    NumberOfOpportunitiesInProgressPercent = Math.Round(((countModel.NumberOfOpportunitiesInProgress / (decimal)countModel.NumberOfOpportunitiesCreated) * 100), 2),
            //    NumberOfOpportunitesUser = countModel.NumberOfOpportunitiesUser,
            //    NumberOfOpportunitiesUserPercent = Math.Round(((countModel.NumberOfOpportunitiesUser / (decimal)countModel.NumberOfOpportunitiesCreated) * 100), 2),
            //    NumberOfOpportunitiesToLead = countModel.NumberOfOpportunitiesToLead,
            //    NumberOfOpportunitiesToLeadPercent = Math.Round(((countModel.NumberOfOpportunitiesToLead / (decimal)countModel.NumberOfOpportunitiesCreated) * 100), 2),
            //    NumberOfOpportunitiesRejected = countModel.NumberOfOpportunitiesRejected,
            //    NumberOfOpportunitiesRejectedPercent = Math.Round(((countModel.NumberOfOpportunitiesRejected / (decimal)countModel.NumberOfOpportunitiesCreated) * 100), 2),
            //    NumberOfLeadsCreated = countModel.NumberOfLeadsCreated,
            //    NumberOfLeadsInProgress = countModel.NumberOfLeadsInProgress,
            //    NumberOfLeadsInProgressPercent = Math.Round(((countModel.NumberOfLeadsInProgress / (decimal)countModel.NumberOfLeadsCreated) * 100), 2),
            //    NumberOfLeadsMeetings = countModel.NumberOfLeadsMeetings,
            //    NumberOfLeadsMeetingsPercent = Math.Round(((countModel.NumberOfLeadsMeetings / (decimal)countModel.NumberOfLeadsCreated) * 100), 2),
            //    NumberOfLeadsQuotes = countModel.NumberOfLeadsQuotes,
            //    NumberOfLeadsQuotesPercent = Math.Round(((countModel.NumberOfLeadsQuotes / (decimal)countModel.NumberOfLeadsCreated) * 100), 2),
            //    NumberOfLeadsRejected = countModel.NumberOfLeadsRejected,
            //    NumberOfLeadsRejectedPercent = Math.Round(((countModel.NumberOfLeadsRejected / (decimal)countModel.NumberOfLeadsCreated) * 100), 2),
            //    NumberOfLeadsAccepted = countModel.NumberOfLeadsAccepted,
            //    NumberOfLeadsAcceptedPercent = Math.Round(((countModel.NumberOfLeadsAccepted / (decimal)countModel.NumberOfLeadsCreated) * 100), 2)
            //};
            #endregion

            //var campaignsModel = new EmailBasesCampaignStatsViewModel();
            var campaignMemberModel = new CampaignMember();
            var agentActivities     = new CallCenterDailyStatsViewModel();

            var model = new HomeViewModel
            {
                //INACampaign = modelIna,
                //Campaigns = campaignsModel.GetModels(),
                CampaignMembers = campaignMemberModel.GetCamapigns(User.Identity.Name),
                AgentActivities = agentActivities.GetActivitiesForDashboard()
            };
            return(View(model));
        }