private async Task <SupportSearchResponse> Handle(SupportSearchRequest request)
        {
            return(request switch
            {
                PendingPaymentSupportSearchRequest r => await HandleInternal(r),

                _ => throw new NotImplementedException($"{nameof(SupportSearchRequest)} of type {request.GetType().Name} is not implemented")
            });
示例#2
0
        public HttpResponseMessage Search(SupportSearchRequest requestInfo)
        {
            int org_id = int.Parse(Request.Headers.GetValues("orgId").FirstOrDefault());

            requestInfo.OrgIds = new List <int>();

            if (requestInfo.OrgId == null)
            {
                var org = _IOrgService.GetOrg(org_id);
                if (org.OrgTyp.TypCd == "RESE")
                {
                    requestInfo.OrgIds.Add(org_id);
                    var custOrgs = _IOrgorgService.GetOrgorgs().Where(p => p.OrgId == org_id).Select(s => s.AssociatedOrgId).ToList();
                    requestInfo.OrgIds.AddRange(custOrgs);
                    requestInfo.OrgId = 0;
                }
                else if (org.OrgTyp.TypCd == "CUST")
                {
                    requestInfo.OrgIds.Add(org_id);
                    requestInfo.OrgId = 0;
                }
                else if (org.OrgTyp.TypCd == "TENA")
                {
                }
                else
                {
                    requestInfo.OrgId = 0;
                }
            }
            else
            {
                requestInfo.OrgIds.Add((int)requestInfo.OrgId);
            }


            var work = _IWkflowinstanceService.GetSupportActivityByFilter(requestInfo);

            var result = PlatformMappingHelper.Map <IList <WkflowInstance>, IList <SupportActivityDTO> >(work.ToList()).ToList();

            if (result == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return(Request.CreateResponse <IEnumerable <SupportActivityDTO> >(HttpStatusCode.OK, result));
        }
示例#3
0
        public HttpResponseMessage SupportActivityByDay(SupportSearchRequest requestInfo)
        {
            int?org_id = int.Parse(Request.Headers.GetValues("orgId").FirstOrDefault());

            if (requestInfo.OrgId == null)
            {
                requestInfo.OrgId = org_id;
            }

            if (requestInfo.StartDate == null)
            {
                requestInfo.StartDate = DateTime.UtcNow.AddDays(-30);
                requestInfo.EndDate   = DateTime.UtcNow;
            }

            List <string> statusCodes = null;

            statusCodes = new List <string> {
                "Created", "EXCP", "Assigned to CustomerCare", "Assigned to Customer"
            };

            var data = _IWkflowinstanceService.GetWkflowinstances().Where(p =>
                                                                          (p.WkflowStepHists.Count > 0 ? statusCodes.Contains(p.WkflowStepHists.OrderByDescending(s => s.Id).FirstOrDefault().WkflowStat.Code) : false) &&
                                                                          (requestInfo.OrgId == null || requestInfo.OrgId == p.OrgId) &&
                                                                          (requestInfo.StartDate == null || p.CreateDate >= requestInfo.StartDate) &&
                                                                          (requestInfo.EndDate == null || p.CreateDate <= requestInfo.EndDate));

            var allwork = data.OrderBy(o => o.CreateDate).GroupBy(g => ((DateTime)g.CreateDate).ToString("dd-MMM-yyyy")).Select(i => new
            {
                Date  = i.Key.Substring(0, 6),
                Count = i.Count()
            });

            var closedwork = data.Where(q => q.WkflowStepHists.OrderByDescending(o => o.Id).FirstOrDefault().WkflowStat.Code == "Closed").GroupBy(g => ((DateTime)g.WkflowStepHists.OrderByDescending(o => o.Id).FirstOrDefault().CreateDate).ToString("dd-MMM")).Select(i => new
            {
                Date  = i.Key.Substring(0, 6),
                Count = i.Count()
            });

            List <object> finalwork = new List <object>();

            for (int day = -30; day <= 0; day++)
            {
                int opencount   = 0;
                int closedcount = 0;
                var datecal     = DateTime.UtcNow.AddDays(day).ToString("dd-MMM");
                var find        = allwork.Where(p => p.Date == datecal);
                if (find.Count() > 0)
                {
                    opencount = find.FirstOrDefault().Count;
                }

                var findclosed = closedwork.Where(p => p.Date == datecal);
                if (findclosed.Count() > 0)
                {
                    closedcount = findclosed.FirstOrDefault().Count;
                }

                finalwork.Add(new { Date = datecal, Open = opencount, Closed = closedcount });
            }

            if (finalwork == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return(Request.CreateResponse <IEnumerable <object> >(HttpStatusCode.OK, finalwork));
        }