public async Task <IActionResult> LoadDataChart([FromBody] DashBoardParamModel param) { var data = await _service.DataChartDashBoard(param); return(Ok(data)); }
public async Task <List <ChartDashBoardViewModel> > DataChartDashBoard(DashBoardParamModel param) { var dataAll = await _serverCommon.GetListOEE(param.factory); var data = new List <ChartDashBoardViewModel>(); if (param.date != null && param.dateTo != null) { dataAll = dataAll .Where(x => x.shift_date >= Convert.ToDateTime(param.date) && x.shift_date <= Convert.ToDateTime(param.dateTo)).ToList(); } if (param.shift_id.ToString() != "0") { dataAll = dataAll.Where(x => x.shift_id.ToString() == param.shift_id).ToList(); } if (param.month.ToString() != null) { dataAll = dataAll.Where(x => x.month.ToString() == param.month).ToList(); } if (param.factory.Trim() == "ALL") { data = dataAll.GroupBy(x => new { x.factory_id }).Select(x => new ChartDashBoardViewModel() { key = x.First().factory_id, value = Math.Round(x.Sum(cl => cl.oee_rate) / x.Count(), 0) }).ToList(); var factorys = await _serverCommon.GetListFactory(); var data1 = data.Select(x => x.key).ToList(); foreach (var item in factorys) { if (!data1.Contains(item.factory_id)) { var item1 = new ChartDashBoardViewModel(); item1.key = item.factory_id; item1.value = null; data.Add(item1); } } var listfactory = await _repofactory.FindAll().ToListAsync(); data = (from a in data join b in listfactory on a.key.Trim() equals b.factory_id.Trim() select new ChartDashBoardViewModel() { key = b.customer_name, value = a.value }).ToList(); } if (param.factory != "ALL") { data = dataAll.Where(x => x.factory_id.Trim() == param.factory.Trim()) .GroupBy(x => new { x.factory_id, x.building_id }) .Select(x => new ChartDashBoardViewModel() { key = x.First().building_id, value = Math.Round(x.Sum(cl => cl.oee_rate) / x.Count(), 0) }).ToList(); var builds = await _serverCommon.GetListBuilding(param.factory); var data1 = data.Select(x => x.key).ToList(); foreach (var item in builds) { if (!data1.Contains(item)) { var item1 = new ChartDashBoardViewModel(); item1.key = item; item1.value = null; data.Add(item1); } } } if (param.building != "ALL") { data = dataAll.Where(x => x.factory_id.Trim() == param.factory.Trim() && x.building_id.Trim() == param.building.Trim()) .GroupBy(x => new { x.factory_id, x.building_id, x.machine_id }) .Select(x => new ChartDashBoardViewModel() { key = x.First().machine_id, value = Math.Round(x.Sum(cl => cl.oee_rate) / x.Count(), 0) }).ToList(); } if (param.machine_id != "ALL") { var listMachine = await _serverCommon.ListMachineID(param.factory, param.building, param.machine_id); data = dataAll.Where(x => x.factory_id.Trim() == param.factory.Trim() && x.building_id.Trim() == param.building.Trim() && listMachine.Contains(x.machine_id)) .GroupBy(x => new { x.factory_id, x.building_id, x.machine_id }) .Select(x => new ChartDashBoardViewModel() { key = x.First().machine_id, value = Math.Round(x.Sum(cl => cl.oee_rate) / x.Count(), 0) }).ToList(); } return(data); }