Пример #1
0
        public ReportCustomerListModel GetCustomers(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportCustomerListModel model = new ReportCustomerListModel();

            model.data = _reportService.GetCustomers(business_id, filter).Result.ToList();
            return(model);
            //{"last_page": 20.285714285714285, "data": [{"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Phan Nhung", "avatar": "avatars/yexir.png", "phone": "", "id": 39751, "messages": 1, "date_registred": 1485429405.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "\u0110o\u00e0n Nhi", "avatar": "avatars/yexir.png", "phone": "", "id": 39754, "messages": 1, "date_registred": 1485429978.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "B\u00ecnh Tr\u1ecbnh", "avatar": "avatars/yexir.png", "phone": "", "id": 39755, "messages": 2, "date_registred": 1485430236.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Ti\u1ebfn Ph\u1ea1m", "avatar": "avatars/yexir.png", "phone": "", "id": 39759, "messages": 2, "date_registred": 1485431838.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "H\u01b0ng C\u00f2ii", "avatar": "avatars/yexir.png", "phone": "", "id": 39764, "messages": 2, "date_registred": 1485433939.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Ha Nguyen", "avatar": "avatars/yexir.png", "phone": "", "id": 39791, "messages": 1, "date_registred": 1485438226.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "S\u1eefu Ca", "avatar": "avatars/yexir.png", "phone": "", "id": 39803, "messages": 1, "date_registred": 1485439879.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "\u0110inh Nghi\u1ec7p", "avatar": "avatars/yexir.png", "phone": "", "id": 39821, "messages": 2, "date_registred": 1485442806.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Ngocdue Pham", "avatar": "avatars/yexir.png", "phone": "", "id": 39835, "messages": 2, "date_registred": 1485444786.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Li\u1ec1u V\u00e2n", "avatar": "avatars/yexir.png", "phone": "", "id": 39881, "messages": 2, "date_registred": 1485450317.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "H\u00f9ng D\u01b0\u01a1ng", "avatar": "avatars/yexir.png", "phone": "", "id": 39886, "messages": 2, "date_registred": 1485450554.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Dung Do", "avatar": "avatars/yexir.png", "phone": "", "id": 39906, "messages": 2, "date_registred": 1485451665.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Nhi Phn", "avatar": "avatars/yexir.png", "phone": "", "id": 39966, "messages": 4, "date_registred": 1485456865.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Khuong Nguyen", "avatar": "avatars/yexir.png", "phone": "", "id": 39997, "messages": 2, "date_registred": 1485460859.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Th\u1ee7y Nguy\u1ec5n", "avatar": "avatars/yexir.png", "phone": "", "id": 40034, "messages": 1, "date_registred": 1485465236.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Lac LeGia", "avatar": "avatars/yexir.png", "phone": "", "id": 40039, "messages": 3, "date_registred": 1485465971.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Tra Hen", "avatar": "avatars/yexir.png", "phone": "", "id": 40059, "messages": 1, "date_registred": 1485468356.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Nguyen Dem", "avatar": "avatars/yexir.png", "phone": "", "id": 40085, "messages": 1, "date_registred": 1485472661.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Nguy\u1ec5n Hu\u1ec7", "avatar": "avatars/yexir.png", "phone": "", "id": 40086, "messages": 2, "date_registred": 1485472677.0, "city": null}, {"completed_tickets": 0, "address": null, "channel_id": 2161, "email": null, "pending_tickets": 0, "name": "Do Hieu Dovan Hieu", "avatar": "avatars/yexir.png", "phone": "", "id": 40096, "messages": 1, "date_registred": 1485473823.0, "city": null}]}
            //reports/customers?date=range&init=1483203600000&finish=1485968399999&customer=43264%2C44410%2C39751%2C39754%2C39755%2C39759%2C39764%2C39791%2C39803%2C39821&page=1
        }
Пример #2
0
        public ReportAgentListModel GetAgents(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportAgentListModel model = new ReportAgentListModel {
                data = new List <ReportAgentDataLine>()
            };
            IEnumerable <ReportAgentDataLine> list = _reportService.GetAgents(business_id, filter).Result;

            foreach (var item in list)
            {
                model.data.Add(item);
            }
            return(model);
            //{"last_page": 1.0952380952380953, "data": [{"last_login": 1488074399.0, "avg_first_response_time": 497, "id": 1664, "chats": 59, "first_name": "Human MM", "completed_orders": 0, "avg_response_time": 0, "avatar": "avatars/default/1.png"}, {"last_login": null, "avg_first_response_time": 0, "id": 1815, "chats": 0, "first_name": "Agent1 Bz", "completed_orders": 0, "avg_response_time": 0, "avatar": "avatars/default/9.png"}]}
            //reports/agents?date=range&init=1483203600000&finish=1485968399999&agent=1664%2C1815&page=1
        }
Пример #3
0
        public ReportTicketListModel GetTickets(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportTicketListModel model = new ReportTicketListModel {
                data = new List <ReportTicketModel>()
            };
            IEnumerable <ReportTicketModel> list = _reportService.GetTickets(business_id, filter).Result;

            foreach (var item in list)
            {
                model.data.Add(item);
            }
            return(model);

            //{"last_page": 9.666666666666666, "data": [{"status_display": "Attention", "customer_name": "Phan Nhung", "status": 1, "subcathegories": [], "customer_id": 39751, "samurais": [1664], "id": 29287, "channel_id": 2161, "created_at": 1485429407.0, "short_description": "#29287", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "\u0110o\u00e0n Nhi", "status": 0, "subcathegories": [], "customer_id": 39754, "samurais": [1664], "id": 29288, "channel_id": 2161, "created_at": 1485429979.0, "short_description": "#29288", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "B\u00ecnh Tr\u1ecbnh", "status": 0, "subcathegories": [], "customer_id": 39755, "samurais": [1664], "id": 29291, "channel_id": 2161, "created_at": 1485430237.0, "short_description": "#29291", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Ti\u1ebfn Ph\u1ea1m", "status": 0, "subcathegories": [], "customer_id": 39759, "samurais": [], "id": 29298, "channel_id": 2161, "created_at": 1485431840.0, "short_description": "#29298", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "H\u01b0ng C\u00f2ii", "status": 0, "subcathegories": [], "customer_id": 39764, "samurais": [1664], "id": 29303, "channel_id": 2161, "created_at": 1485433941.0, "short_description": "#29303", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Ha Nguyen", "status": 0, "subcathegories": [], "customer_id": 39791, "samurais": [1664], "id": 29334, "channel_id": 2161, "created_at": 1485438227.0, "short_description": "#29334", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "S\u1eefu Ca", "status": 0, "subcathegories": [], "customer_id": 39803, "samurais": [1664], "id": 29347, "channel_id": 2161, "created_at": 1485439880.0, "short_description": "#29347", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "\u0110inh Nghi\u1ec7p", "status": 0, "subcathegories": [], "customer_id": 39821, "samurais": [1664], "id": 29370, "channel_id": 2161, "created_at": 1485442807.0, "short_description": "#29370", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Ngocdue Pham", "status": 0, "subcathegories": [], "customer_id": 39835, "samurais": [1664], "id": 29390, "channel_id": 2161, "created_at": 1485444788.0, "short_description": "#29390", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Li\u1ec1u V\u00e2n", "status": 0, "subcathegories": [], "customer_id": 39881, "samurais": [1664], "id": 29451, "channel_id": 2161, "created_at": 1485450324.0, "short_description": "#29451", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "H\u00f9ng D\u01b0\u01a1ng", "status": 0, "subcathegories": [], "customer_id": 39886, "samurais": [1664], "id": 29456, "channel_id": 2161, "created_at": 1485450556.0, "short_description": "#29456", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Dung Do", "status": 0, "subcathegories": [], "customer_id": 39906, "samurais": [1664], "id": 29479, "channel_id": 2161, "created_at": 1485451667.0, "short_description": "#29479", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Nhi Phn", "status": 0, "subcathegories": [], "customer_id": 39966, "samurais": [1664], "id": 29549, "channel_id": 2161, "created_at": 1485456866.0, "short_description": "#29549", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Khuong Nguyen", "status": 0, "subcathegories": [], "customer_id": 39997, "samurais": [1664], "id": 29596, "channel_id": 2161, "created_at": 1485460861.0, "short_description": "#29596", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Th\u1ee7y Nguy\u1ec5n", "status": 0, "subcathegories": [], "customer_id": 40034, "samurais": [1664], "id": 29643, "channel_id": 2161, "created_at": 1485465237.0, "short_description": "#29643", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Lac LeGia", "status": 0, "subcathegories": [], "customer_id": 40039, "samurais": [1664], "id": 29652, "channel_id": 2161, "created_at": 1485465973.0, "short_description": "#29652", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Tra Hen", "status": 0, "subcathegories": [], "customer_id": 40059, "samurais": [1664], "id": 29680, "channel_id": 2161, "created_at": 1485468358.0, "short_description": "#29680", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Nguyen Dem", "status": 0, "subcathegories": [], "customer_id": 40085, "samurais": [1664], "id": 29708, "channel_id": 2161, "created_at": 1485472662.0, "short_description": "#29708", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Nguy\u1ec5n Hu\u1ec7", "status": 0, "subcathegories": [], "customer_id": 40086, "samurais": [1664], "id": 29709, "channel_id": 2161, "created_at": 1485472678.0, "short_description": "#29709", "customer_avatar": "avatars/yexir.png"}, {"status_display": "Pending", "customer_name": "Do Hieu Dovan Hieu", "status": 0, "subcathegories": [], "customer_id": 40096, "samurais": [1664], "id": 29719, "channel_id": 2161, "created_at": 1485473824.0, "short_description": "#29719", "customer_avatar": "avatars/yexir.png"}]}
            //reports/orders?date=range&init=1483203600000&finish=1485968399999&period=week&page=1
        }
Пример #4
0
        public ReportChartDataModel GetCustomersBars(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportChatDataLine> list = _reportService.GetCustomerChatChartData(business_id, filter).Result;
            var total = 0;
            var data  = new int[] { list.Select(t => t.customers).Sum(), list.Select(t => t.inboxes).Sum(), list.Select(t => t.comments).Sum(), list.Select(t => t.inbox_replies).Sum(), list.Select(t => t.comment_replies).Sum() };

            model.lines.Add(new ChartDataLine {
                data = data
            });
            model.total = total;
            return(model);
            //{"lines": [{"name": "Phan Nhung", "data": [1, 1, 0]}, {"name": "\u0110o\u00e0n Nhi", "data": [1, 1, 0]}, {"name": "B\u00ecnh Tr\u1ecbnh", "data": [2, 1, 0]}, {"name": "Ti\u1ebfn Ph\u1ea1m", "data": [2, 1, 0]}, {"name": "H\u01b0ng C\u00f2ii", "data": [2, 1, 0]}, {"name": "Ha Nguyen", "data": [1, 1, 0]}, {"name": "S\u1eefu Ca", "data": [1, 1, 0]}, {"name": "\u0110inh Nghi\u1ec7p", "data": [2, 1, 0]}, {"name": "Baza Vietnam", "data": [0, 0, 0]}, {"name": "Qu\u1ef3nh Nh\u01b0", "data": [0, 0, 0]}]}
            //reports/customers_bar?date=range&init=1483203600000&finish=1485968399999&customer=43264%2C44410%2C39751%2C39754%2C39755%2C39759%2C39764%2C39791%2C39803%2C39821&page=1
        }
Пример #5
0
        public ReportChartDataModel GetTicketsBar(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportTicketDataLine> list = _reportService.GetTicketChartData(business_id, filter).Result;
            var total = 0;
            var data  = new int[] { list.Select(t => t.tickets).Sum(), list.Select(t => t.tickets - (t.completed_tickets + t.pending_tickets + t.attention_tickets)).Sum(), list.Select(t => t.pending_tickets).Sum(), list.Select(t => t.attention_tickets).Sum() };

            model.lines.Add(new ChartDataLine
            {
                data = data
            });
            model.total = total;
            return(model);
            //{"lines": [{"name": "2016-12-26", "data": [0, 0, 0]}, {"name": "2017-01-02", "data": [0, 0, 0]}, {"name": "2017-01-09", "data": [0, 0, 0]}, {"name": "2017-01-16", "data": [0, 0, 0]}, {"name": "2017-01-23", "data": [148, 0, 0]}, {"name": "2017-01-30", "data": [17, 0, 0]}]}
            //reports/orders_line?date=range&init=1483203600000&finish=1485968399999&period=week&page=1
        }
Пример #6
0
        public ReportChartDataModel GetAgentChartData(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportAgentDataLine> list = _reportService.GetAgentChartData(business_id, filter).Result;

            foreach (var item in list)
            {
                //var data = string.Format("[{0}, {1}, {2}, {3}]", item.customers, item.conversations, item.messages, item.tickets);
                var data = new int[] { item.customers, item.conversations, item.messages, item.tickets };
                model.lines.Add(new ChartDataLine {
                    id = item.id, name = item.name, data = data
                });
                model.total++;
            }
            return(model);
            //db_agents?date=range&init=1483203600000&finish=1488034801447&agent=1664%2C1815&period=month
        }
Пример #7
0
        public ReportChartDataModel GetAgentsBars(string business_id, [FromQuery] ReportDataFilter filter)
        {
            filter.limit = 50;
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportAgentDataLine> list = _reportService.GetAgentChartData(business_id, filter).Result;

            foreach (var item in list)
            {
                var data = new int[] { item.customers, item.conversations, item.messages, item.tickets };
                model.lines.Add(new ChartDataLine {
                    id = item.id, name = item.name, data = data
                });
                model.total++;
            }
            return(model);
            //{"lines": [{"name": "Human MM", "data": [497, 0, 0, 59]}, {"name": "Agent1 Bz", "data": [0, 0, 0, 0]}]}
            //reports/agents_bar?date=range&init=1483203600000&finish=1485968399999&agent=1664%2C1815&page=1
        }
Пример #8
0
        public ReportChartDataModel GetFirstResponseChartData(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportResponseModel> list = _reportService.GetFirstResponseChartData(business_id, filter).Result;

            foreach (var item in list)
            {
                var data = string.Format("[{0}]", string.Join(",", new int[item.first_response_time]));
                model.lines.Add(new ChartDataLine {
                    id = item.id, name = item.name, data = data
                });
            }
            return(model);


            //{"total": 0, "lines": [{"name": "2016/12", "data": [0] }, {"name": "2017/1", "data": [497]}, {"name": "2017/2", "data": [23]}]}
            //reports/db_first_response?date=range&init=1483203600000&finish=1488038268796&samurai=1664%2C1815&period=month
        }
Пример #9
0
        public ReportChartDataModel GetTicketsLine(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportTicketDataLine> list = _reportService.GetTicketChartData(business_id, filter).Result;
            var total = 0;

            foreach (var item in list)
            {
                var data = new int[] { item.tickets, item.completed_tickets, item.tickets - (item.completed_tickets + item.pending_tickets + item.attention_tickets), item.pending_tickets, item.attention_tickets };
                model.lines.Add(new ChartDataLine {
                    name = item.name, data = data
                });
                total += item.tickets;
            }
            model.total = total;
            return(model);
            //{"lines": [{"name": "2016-12-26", "data": [0, 0, 0]}, {"name": "2017-01-02", "data": [0, 0, 0]}, {"name": "2017-01-09", "data": [0, 0, 0]}, {"name": "2017-01-16", "data": [0, 0, 0]}, {"name": "2017-01-23", "data": [148, 0, 0]}, {"name": "2017-01-30", "data": [17, 0, 0]}]}
            //reports/orders_line?date=range&init=1483203600000&finish=1485968399999&period=week&page=1
        }
Пример #10
0
        public ReportChartDataModel GetAgentMessageChartData(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportChatDataLine> list = _reportService.GetAgentChatChartData(business_id, filter).Result;
            var total = 0;

            foreach (var item in list)
            {
                var data = new int[] { item.inboxes, item.comments };
                total += item.inboxes + item.comments;
                model.lines.Add(new ChartDataLine {
                    name = item.name, data = data
                });
            }
            model.total = total;
            return(model);

            // { "total": 408, "lines": [{"name": "2016/12", "data": [0] }, {"name": "2017/1", "data": [182]}, {"name": "2017/2", "data": [226]}]}
        }
Пример #11
0
        public ReportChartDataModel GetTicketChartData(string business_id, [FromQuery] ReportDataFilter filter)
        {
            ReportChartDataModel model = new ReportChartDataModel {
                lines = new List <ChartDataLine>()
            };
            IEnumerable <ReportTicketDataLine> list = _reportService.GetTicketChartData(business_id, filter).Result;
            var total = 0;

            foreach (var item in list)
            {
                var data = new int[] { item.tickets };
                model.lines.Add(new ChartDataLine {
                    id = item.id, name = item.name, data = data
                });
                total += item.tickets;
            }
            model.total = total;
            return(model);

            //{ "total": 408, "lines": [{"name": "2016/12", "data": [0]}, {"name": "2017/1", "data": [182]}, {"name": "2017/2", "data": [226]}]}
            //reports/db_ticket_opened?date=range&init=1483203600000&finish=1488038268796&samurai=1664%2C1815&period=month
        }
Пример #12
0
        public async Task <IEnumerable <ReportChatDataLine> > GetAgentChatChartData(string business_id, ReportDataFilter filter)
        {
            Paging page = new Paging {
                Limit = 50, Previous = (filter.init_utc > 99999999999 ? filter.init_utc / 1000 : filter.init_utc).ToString(), Next = (filter.finish_utc > 99999999999 ? filter.finish_utc / 1000 : filter.finish_utc).ToString()
            };
            IEnumerable <ReportChatDataLine> list = await _reportRepository.GetAgentChatChartData(business_id, page);

            if (list != null && list.Count() > 0)
            {
                switch (filter.period)
                {
                case "week":
                    var first = list.Count() > 0 ? list.First().date : DateTime.MinValue;
                    list = list.GroupBy(a => (a.date - first).TotalDays / 7).Select(g => new ReportChatDataLine
                    {
                        name          = g.First().date.ToString("dd/MM"),
                        customers     = g.Select(b => b.customers).Sum(),
                        conversations = g.Select(b => b.conversations).Sum(),
                        comments      = g.Select(b => b.comments).Sum(),
                        inboxes       = g.Select(b => b.inboxes).Sum()
                    }).ToList();
                    break;

                case "month":
                    list = list.GroupBy(a => a.date.Month).Select(g => new ReportChatDataLine
                    {
                        name          = g.First().date.ToString("MM/yy"),
                        customers     = g.Select(b => b.customers).Sum(),
                        conversations = g.Select(b => b.conversations).Sum(),
                        comments      = g.Select(b => b.comments).Sum(),
                        inboxes       = g.Select(b => b.inboxes).Sum()
                    }).ToList();
                    break;

                default:
                    foreach (var item in list)
                    {
                        item.name = item.date.ToString("dd/MM");
                    }
                    break;
                }
            }
            return(list);
        }
Пример #13
0
        public async Task <IEnumerable <ReportTicketModel> > GetTickets(string business_id, ReportDataFilter filter)
        {
            Paging page = new Paging {
                Limit = filter.limit, Previous = Core.Helpers.CommonHelper.UnixTimestampToDateTime(filter.init > 99999999999 ? filter.init / 1000 : filter.init).ToString(), Next = filter.finish > 99999999999 ? (filter.finish / 1000).ToString() : filter.finish.ToString()
            };
            List <ReportTicketModel> list = new List <ReportTicketModel>();

            foreach (var item in await _ticketService.GetTickets(business_id, page))
            {
                list.Add(new ReportTicketModel
                {
                    id                = item.id,
                    customer_name     = item.customer_name,
                    customer_avatar   = item.customer_avatar,
                    customer_id       = item.customer_id,
                    channel_id        = item.channel_id,
                    created_at        = item.timestamp,
                    status            = item.status,
                    status_display    = item.getStatusName(item.status),
                    short_description = item.short_description,
                    tags              = string.IsNullOrWhiteSpace(item.tags) ? new string[] { } : item.tags.Split(','),
                    agents            = new string[] { item.sender_id }
                });
            }
            return(list);
        }
Пример #14
0
        public async Task <IEnumerable <ReportAgentDataLine> > GetAgents(string business_id, ReportDataFilter filter)
        {
            Paging page = new Paging {
                Limit = 100, Previous = (filter.init > 99999999999 ? filter.init / 1000 : filter.init).ToString(), Next = (filter.finish > 99999999999 ? filter.finish / 1000 : filter.finish).ToString()
            };
            IEnumerable <ReportAgentDataLine> list = await _reportRepository.GetAgentChartData(business_id, page);

            var agents = (await _agentService.GetAgents(business_id, 0, 100)).Where(a => !a.locked).ToDictionary(a => a.id, b => b);

            foreach (var item in list)
            {
                if (string.IsNullOrWhiteSpace(item.name) && agents.ContainsKey(item.id))
                {
                    item.name = agents[item.id].first_name + ' ' + agents[item.id].last_name;
                }
                item.last_acted = agents[item.id].last_acted_time == null ? 0 : Core.Helpers.CommonHelper.DateTimeToUnixTimestamp(agents[item.id].last_acted_time);
                item.last_login = agents[item.id].last_loggedin_time == null ? 0 : Core.Helpers.CommonHelper.DateTimeToUnixTimestamp(agents[item.id].last_loggedin_time);
                item.avatar     = agents[item.id].avatar;
            }
            return(list);
        }
Пример #15
0
        public async Task <IEnumerable <ReportAgentDataLine> > GetAgentChartData(string business_id, ReportDataFilter filter)
        {
            Paging page = new Paging {
                Limit = filter.limit, Previous = (filter.init_utc > 99999999999 ? filter.init_utc / 1000 : filter.init_utc).ToString(), Next = (filter.finish_utc > 99999999999 ? filter.finish_utc / 1000 : filter.finish_utc).ToString()
            };
            IEnumerable <ReportAgentDataLine> list = await _reportRepository.GetAgentChartData(business_id, page);

            var agents = (await _agentService.GetAgents(business_id, 0, 100)).Where(a => !a.locked).ToDictionary(a => a.id, b => b.first_name + ' ' + b.last_name);

            foreach (var item in list)
            {
                if (string.IsNullOrWhiteSpace(item.name) && agents.ContainsKey(item.id))
                {
                    item.name = agents[item.id];
                }
            }
            return(list);
        }
Пример #16
0
        public async Task <IEnumerable <ReportTicketDataLine> > GetTicketChartData(string business_id, ReportDataFilter filter)
        {
            //Paging page = new Paging { Limit = filter.limit, Previous = Core.Helpers.CommonHelper.UnixTimestampToDateTime(filter.init_utc > 99999999999 ? filter.init_utc / 1000 : filter.init_utc).ToString(), Next = Core.Helpers.CommonHelper.UnixTimestampToDateTime(filter.finish_utc > 99999999999 ? filter.finish_utc / 1000 : filter.finish_utc).ToString() };
            Paging page = new Paging {
                Limit = filter.limit, Previous = (filter.init_utc > 99999999999 ? filter.init_utc / 1000 : filter.init_utc).ToString(), Next = (filter.finish_utc > 99999999999 ? filter.finish_utc / 1000 : filter.finish_utc).ToString()
            };
            IEnumerable <ReportTicketDataLine> list = await _reportRepository.GetTicketChartData(business_id, page);

            if (list != null && list.Count() > 0)
            {
                switch (filter.period)
                {
                case "week":
                    var first = list.Count() > 0 ? list.First().date : DateTime.MinValue;
                    list = list.GroupBy(a => (a.date - first).TotalDays / 7).Select(g => new ReportTicketDataLine
                    {
                        name = g.First().date.ToString("dd/MM"),
                        completed_tickets = g.Select(b => b.completed_tickets).Sum(),
                        attention_tickets = g.Select(b => b.attention_tickets).Sum(),
                        pending_tickets   = g.Select(b => b.pending_tickets).Sum(),
                        tickets           = g.Select(b => b.tickets).Sum()
                    }).ToList();
                    break;

                case "month":
                    list = list.GroupBy(a => a.date.Month).Select(g => new ReportTicketDataLine
                    {
                        name = g.First().date.ToString("MM/yy"),
                        completed_tickets = g.Select(b => b.completed_tickets).Sum(),
                        attention_tickets = g.Select(b => b.attention_tickets).Sum(),
                        pending_tickets   = g.Select(b => b.pending_tickets).Sum(),
                        tickets           = g.Select(b => b.tickets).Sum()
                    }).ToList();
                    break;

                default:
                    foreach (var item in list)
                    {
                        item.name = item.date.ToString("dd/MM");
                    }
                    break;
                }
            }
            return(list);
        }
Пример #17
0
        public async Task <IEnumerable <ReportMessageModel> > GetMessageChartData(string business_id, ReportDataFilter filter)
        {
            List <ReportMessageModel> list = new List <ReportMessageModel>();

            return(list);
        }
Пример #18
0
        public async Task <IEnumerable <ReportCustomerModel> > GetCustomers(string business_id, ReportDataFilter filter)
        {
            Paging page = new Paging {
                Limit = filter.limit, Previous = (filter.init > 99999999999 ? filter.init / 1000 : filter.init).ToString(), Next = (filter.finish > 99999999999 ? filter.finish / 1000 : filter.finish).ToString()
            };
            List <ReportCustomerModel> list = new List <ReportCustomerModel>();

            foreach (var item in await _customerService.SearchCustomers(business_id, "", "", "", "", "", page))
            {
                list.Add(new ReportCustomerModel
                {
                    id              = item.id,
                    address         = item.address,
                    avatar          = item.avatar,
                    channel_id      = item.channel_id,
                    city            = item.city,
                    email           = item.email,
                    name            = item.name,
                    phone           = item.phone,
                    date_registered = item.timestamp
                });
            }
            return(list);
        }