public JsonResult GetSummaryDataPer24Hours(string id)
        {
            var end     = DateTime.Now;
            var start   = end.AddDays(-1);
            var userId  = (Guid)MembershipService.GetUser(User.Identity.Name).ProviderUserKey;
            var context = new IncomingCallsQAEntities();

            var stat = context.StatisticTracks.Where(item => item.UserId == userId && item.StartDate >= start && item.StartDate <= end).ToList();

            if (stat.Count > 0)
            {
                var last = stat.Last();
                stat.Remove(last);
            }

            var completed   = stat.Count(item => item.OptionId != null);
            var uncompleted = stat.Count(item => item.OptionId == null);

            return(Json(
                       new
            {
                userstat = new[]
                {
                    new { text = "completed", value = completed, color = "#00FF00" },
                    new { text = "uncompleted", value = uncompleted, color = "#FF0000" }
                }
            }));
        }
Example #2
0
        public ActionResult ShowStat24(string id, string id2)
        {
            var userId = (Guid)MembershipService.GetUser(User.Identity.Name).ProviderUserKey;
            //var id = Request.Form["id"];
            //var id2 = Request.Form["id2"];
            var end     = DateTime.Now;
            var start   = end.AddDays(-1);
            var context = new IncomingCallsQAEntities();
            var list    = context.StatisticTracks.Where(
                i => i.UserId == userId && i.StartDate >= start && i.StartDate <= end && i.OptionId == null)
                          .Select(
                t =>
                new CallStat
            {
                TrackId      = t.TrackId,
                CalledNumber = t.CalledNumber,
                DialedNumber = t.DialedNumber,
                StartDate    = t.StartDate
            }).ToList();
            var listOfOptions = context.EndCallOptions.Select(item => new Option {
                OptionId = item.OptionId, OptionName = item.OptionName
            }).ToList();

            listOfOptions.Add(new Option()
            {
                OptionId = -1, OptionName = "None"
            });
            var model = new Stat24Model {
                StartDate = start, EndDate = end, UserStat24 = list, AllPossibleOptions = listOfOptions
            };

            return(View(model));
        }
Example #3
0
        public ActionResult DownloadFullStatistic(int?fr)
        {
            var generator = new ExcelWriter();
            var context   = new IncomingCallsQAEntities();

            var statisticlist = (from s in context.StatisticTracks
                                 join ls in context.LookupScripts on s.CalledNumber equals ls.LookupPhoneNr into tls
                                 from ls in tls.DefaultIfEmpty()
                                 join eo in context.EndCallOptions on s.OptionId equals eo.OptionId into teo
                                 from eo in teo.DefaultIfEmpty()
                                 where s.CalledNumber != ""
                                 select new
            {
                seqnr = s.TrackId,
                calltime = s.StartDate,
                s.CalledNumber,
                s.DialedNumber,
                s.Duration,
                s.Jobid,
                s.UserId,
                ls.XMLCode,
                eo.OptionName
            }).OrderBy(q => q.seqnr);

            var xml = "<rows><head><columns>";

            xml += "<column width='50' type='ch' align='center' color='white' sort='int'>Sequence</column>";
            xml += "<column width='150' type='ch' align='center' color='white' sort='date'>Call Time</column>";
            xml += "<column width='100' type='ch' align='center' color='white' sort='str'>Called Number</column>";
            xml += "<column width='100' type='ch' align='center' color='white' sort='str'>Dialed Number</column>";
            xml += "<column width='80' type='ch' align='center' color='white' sort='str'>Duration</column>";
            xml += "<column width='80' type='ch' align='center' color='white' sort='str'>JobID</column>";
            xml += "<column width='100' type='ch' align='center' color='white' sort='str'>User Name</column>";
            xml += "<column width='100' type='ch' align='center' color='white' sort='str'>XML Code</column>";
            xml += "<column width='100' type='ch' align='center' color='white' sort='str'>Option Name</column></columns></head>";

            foreach (var row in statisticlist)
            {
                xml += "<row id='" + row.seqnr + "'>";
                xml += "<cell><![CDATA[" + row.seqnr + "]]></cell>";
                xml += "<cell><![CDATA[" + row.calltime + "]]></cell>";
                xml += "<cell><![CDATA[" + row.CalledNumber + "]]></cell>";
                xml += "<cell><![CDATA[" + row.DialedNumber + "]]></cell>";
                xml += "<cell><![CDATA[" + row.Duration + "]]></cell>";
                xml += "<cell><![CDATA[" + row.Jobid + "]]></cell>";
                xml += "<cell><![CDATA[" + Membership.GetUser(row.UserId).UserName + "]]></cell>";
                xml += "<cell><![CDATA[" + row.XMLCode + "]]></cell>";
                xml += "<cell><![CDATA[" + row.OptionName + "]]></cell>";
                xml += "</row>";
            }
            xml += "</rows>";

            var stream = generator.Generate(xml);

            return(File(stream.ToArray(), generator.ContentType, "FullStatistic.xlsx"));
        }
 private static int[] GetAvailableFranchises(int scriptId)
 {
     using (var incomingContext = new IncomingCallsQAEntities())
     {
         return(incomingContext.Tbl_scriptToFranchiseID
                .Where(t => t.ScriptID == scriptId)
                .Select(f => f.FranchiseID)
                .ToArray());
     }
 }
Example #5
0
        private static List <string> GetEndCallOptions()
        {
            var context = new IncomingCallsQAEntities();

            var endCallOptions = context.EndCallOptions.Select(i => i.OptionName).ToList();

            endCallOptions.Add("Unknow");

            return(endCallOptions);
        }
        public Guid GetCallTalkerUserID(string phone)
        {
            try
            {
                var context = new IncomingCallsQAEntities();

                return(context.StatisticTracks.First(q => q.CalledNumber == phone).UserId);
            }
            catch (Exception)
            {
                return(Guid.Empty);
            }
        }
        public string GetCallTalkerID(string phone)
        {
            try
            {
                var context = new IncomingCallsQAEntities();

                return(context.StatisticTracks.First(q => q.CalledNumber == phone).UserId.ToString());
            }
            catch (Exception)
            {
                return("N/A");
            }
        }
Example #8
0
        private Dictionary <InfoNumber, List <KeyValuePair <string, int> > > GetDicOfCallTalkerStat(DateTime?start, DateTime?end, ICollection <int> franchisesId)
        {
            var context = new IncomingCallsQAEntities();

            var EmptyGuid = Guid.Empty;

            var PhoneNumbers =
                context.Tbl_scriptToFranchiseID.Where(item => franchisesId.Contains(item.FranchiseID)).Select(
                    item =>
                    new InfoNumber
            {
                Description = item.LookupScript.XMLCode,
                PhoneNumber = item.LookupScript.LookupPhoneNr.Remove(0, 1),
                UserId      = EmptyGuid
            }).
                ToList();

            var objmodcommon = new mod_common(new Guid());

            var numbersInfos =
                PhoneNumbers.Select(
                    item =>
                    new InfoNumber
            {
                Description = item.Description,
                PhoneNumber = item.PhoneNumber,
                UserId      = objmodcommon.GetCallTalkerUserID(item.PhoneNumber)
            }).
                ToList();

            var users = numbersInfos.Select(i => i.UserId);

            var dic  = new Dictionary <InfoNumber, List <KeyValuePair <string, int> > >();
            var stat =
                context.StatisticTracks.Where(
                    item => users.Contains(item.UserId) && item.StartDate >= start.Value && item.StartDate < end.Value).
                GroupBy(i => i.UserId).
                ToList();

            foreach (var user in stat)
            {
                dic.Add(numbersInfos.First(i => i.UserId.ToString() == user.Key.ToString()),
                        user.GroupBy(i => i.EndCallOption != null ? i.EndCallOption.OptionName : "Unknow").Select(
                            i => new KeyValuePair <string, int>(i.Key, i.Count())).ToList());
            }

            return(dic);
        }
        private static IEnumerable <VADM_CallStats> GetCallStateData(DateTime?from, DateTime?to)
        {
            using (var ctx = new IncomingCallsQAEntities())
            {
                IQueryable <VADM_CallStats> qry = ctx.VADM_CallStats;
                if (from.HasValue)
                {
                    qry = qry.Where(c => c.calltime >= from);
                }

                if (to.HasValue)
                {
                    qry = qry.Where(c => c.calltime < to);
                }

                return(qry.ToArray());
            }
        }
Example #10
0
        public ActionResult SaveChangesTracks24()
        {
            string type;
            var    trackId = 0;

            try
            {
                trackId = int.Parse(Request.Form["gr_id"]);
                var context = new IncomingCallsQAEntities();
                var track   = context.StatisticTracks.Single(item => item.TrackId == trackId);
                track.OptionId = int.Parse(Request.Form["optionId"]);
                context.SaveChanges();
                type = "updated";
            }
            catch (Exception)
            {
                type = "fail";
            }
            return(new XmlResult(String.Format("<data><action type=\"{0}\" sid=\"{1}\" tid=\"{2}\"/></data>", type, trackId, trackId)));
        }
        public string GetCallTalkerName(string phone)
        {
            try
            {
                var context = new IncomingCallsQAEntities();

                var uid = context.StatisticTracks.First(q => q.CalledNumber == phone).UserId;

                try
                {
                    var context1 = new MembershipEntities();

                    return(context1.aspnet_Users.First(q => q.UserId == uid).UserName);
                }
                catch (Exception)
                {
                    return("N/A");
                }
            }
            catch (Exception)
            {
                return("N/A");
            }
        }
        [ValidateInput(false)] //to support <unavailable> in the query string when a caller has a blocked number.
        public ActionResult ResolveACall(string id, string id2, bool?fullRender, int?calltracker)
        {
            ResolveCallViewModel vm;

            try
            {
                LookupScript lookupScript;
                var          validTrack = false;

                using (var incomingContext = new IncomingCallsQAEntities())
                {
                    lookupScript = incomingContext.LookupScripts.Single(l => l.LookupPhoneNr == id);

                    var stat = incomingContext.StatisticTracks.SingleOrDefault(t => t.TrackId == (calltracker == null ? -1 : calltracker.Value));
                    validTrack = stat != null && stat.OptionId == null && stat.Jobid == null;
                }

                vm = new ResolveCallViewModel
                {
                    Id              = lookupScript.LookupId,
                    DialInNumber    = id.TrimStart('1'),
                    RawDialInNumber = id,
                    Valid           = true
                };

                using (var context = GetContext())
                {
                    vm.CustomerPhone = string.IsNullOrWhiteSpace(id2) ? "ManualEntry" : id2;

                    if (string.Compare(vm.CustomerPhone, "<unavailable>", true) == 0)
                    {
                        vm.CustomerPhone = "Blocked";
                    }

                    var franchises = GetAvailableFranchises(lookupScript.LookupId);

                    vm.AvailableFranchises = context.tbl_Franchise
                                             .Where(f => franchises.Contains(f.FranchiseID))
                                             .ToDictionary(f => f.FranchiseID,
                                                           f => f.FranchiseNUmber + " - " + f.LegalName);

                    int cpFranchise;
                    var friendlyName = vm.DialInNumber;
                    if (int.TryParse(lookupScript.ConnectusCode, out cpFranchise) && vm.AvailableFranchises.Any(p => p.Key == cpFranchise))
                    {
                        friendlyName = vm.AvailableFranchises.Single(p => p.Key == cpFranchise).Value;
                    }

                    vm.CPCode = string.Concat(lookupScript.ConnectusCode.Trim(), " - ", friendlyName);
                }
            }
            catch (Exception)
            {
                vm = new ResolveCallViewModel()
                {
                    CPCode = "Something is wrong -- Unknown number? Number is: " + Request.QueryString["id"],
                    Valid  = false
                };
            }

            return(View(vm));
        }
Example #13
0
        [ValidateInput(false)] //to support <unavailable> in the query string when a caller has a blocked number.
        public ViewResult Incoming(string id, string id2, bool?fullRender, int?calltracker)
        {
            Incoming vm;

            try
            {
                LookupScript lookupscript;
                var          validTrack = false;

                using (var scriptCtx = new IncomingCallsQAEntities())
                {
                    lookupscript = scriptCtx.LookupScripts.Single(l => l.LookupPhoneNr == id);

                    var stat = scriptCtx.StatisticTracks.SingleOrDefault(ct => ct.TrackId == (calltracker == null ? -1 : calltracker.Value));
                    validTrack = stat != null && stat.OptionId == null && stat.Jobid == null;
                }

                vm = new Incoming
                {
                    Id = lookupscript.LookupId,
                    RawDialInNumber     = id,
                    DialInNumber        = id.TrimStart('1'),
                    CallScript          = lookupscript.CallScript,
                    Valid               = true,
                    StatTrackingInvalid = !validTrack
                };

                using (var dbContext = GetContext())
                {
                    vm.CustomerPhone = string.IsNullOrWhiteSpace(id2) ? "ManualEntry" : id2;

                    if (string.Compare(vm.CustomerPhone, "<unavailable>", true) == 0)
                    {
                        vm.CustomerPhone = "Blocked";
                    }

                    if (fullRender.GetValueOrDefault())
                    {
                        var jobPriorities = dbContext.tbl_Job_Priority.Select(j => new { j.JobPriorityID, j.JobPriority })
                                            .OrderBy(j => j.JobPriority)
                                            .ToDictionary(k => k.JobPriorityID, v => v.JobPriority);
                        var pmtTypes = dbContext.tbl_Payment_Types.Select(p => new { p.PaymentTypeId, p.PaymentType })
                                       .OrderBy(p => p.PaymentType)
                                       .ToDictionary(k => k.PaymentTypeId, v => v.PaymentType);
                        vm.JobPriorities = jobPriorities;
                        vm.PaymentTypes  = pmtTypes;
                    }

                    var franchises = GetAvailableFranchises(lookupscript.LookupId);

                    vm.AvailableFranchises = dbContext.tbl_Franchise
                                             .Where(f => franchises.Contains(f.FranchiseID))
                                             .ToDictionary(f => f.FranchiseID,
                                                           f => f.FranchiseNUmber + " - " + f.LegalName);

                    int cpFranchise;
                    var friendlyName = vm.DialInNumber;
                    if (int.TryParse(lookupscript.ConnectusCode, out cpFranchise) && vm.AvailableFranchises.Any(p => p.Key == cpFranchise))
                    {
                        friendlyName = vm.AvailableFranchises.Single(p => p.Key == cpFranchise).Value;
                    }

                    vm.CPCode = string.Concat(lookupscript.ConnectusCode.Trim(), " - ", friendlyName);
                }
            }
            catch (Exception)
            {
                vm = new Incoming()
                {
                    CallScript =
                        "Something is wrong -- Unknown number? Number is: " + Request.QueryString["id"],
                    Valid = false
                };
            }

            vm.CallScript = vm.CallScript.Replace("\"", "\\\"");
            return(View(fullRender.GetValueOrDefault() ? "Incoming" : "IncomingSplash", vm));
        }