public async Task <List <MaintenanceAlert> > GetMaintenanceJobs( MaintenanceAlertResourceParameter parameters ) { var data = await _context.MaintenanceAlert .Include(x => x.Machine) .Include(x => x.SubMachine) .Where( x => x.RequestDateTime.Date >= parameters.StartDate && x.RequestDateTime.Date <= parameters.EndDate ) .ToListAsync() .ConfigureAwait(false); return(data); }
public async Task <IActionResult> Get( [FromQuery] MaintenanceAlertResourceParameter parameter ) { try { var data = await _service .GetMeanTimeBeforeBreakDown(parameter) .ConfigureAwait(false); return(Ok(data)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public async Task <dynamic> GetMeanTimeBeforeBreakDown( MaintenanceAlertResourceParameter parameter ) { var data = await GetMaintenanceJobs(parameter).ConfigureAwait(false); var dates = GetDates( data.Min(x => x.RequestDateTime.Date), data.Max(x => x.RequestDateTime.Date) ); var mtbbByMachine = data.GroupBy( x => new { Line = x.Machine.MachineName, Machine = x.SubMachine.SubMachineName } ) .Select( groupedMachine => { var machineData = groupedMachine.OrderBy(x => x.RequestDateTime).ToList(); var mtbb = GetMtbbList(machineData, dates); return(new { groupedMachine.Key.Line, groupedMachine.Key.Machine, NumberOfBreakdowns = mtbb.Count(m => m.MtbbMinutes != null), Mtbb = mtbb }); } ) .Where(x => x.NumberOfBreakdowns > 0) .OrderBy(x => x.Line) .ThenBy(x => x.Machine) .ToList(); var summary = mtbbByMachine .GroupBy(x => new { x.Line }) .Select(x => new { x.Key.Line, Data = x.ToList() }); return(new { Dates = dates.Select(d => d.Date.ToShortDateString()).ToList(), summary }); }