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);
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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 });
        }