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