public static string ParseOption(this AssemblyFailGroupBy option)
        {
            switch (option)
            {
            case AssemblyFailGroupBy.BoardPartNumber: return("board-part-number");

            case AssemblyFailGroupBy.CircuitPartNumber: return("circuit-part-number");

            case AssemblyFailGroupBy.CitCode: return("cit");

            case AssemblyFailGroupBy.FaultCode: return("fault");

            case AssemblyFailGroupBy.Person: return("person");

            case AssemblyFailGroupBy.Board: return("board");

            default: throw new DomainException($"{option} is not a valid option");
            }
        }
 public void SetUp()
 {
     this.result = "board-part-number".ParseOption();
 }
 public void SetUp()
 {
     this.result = "board".ParseOption();
 }
Esempio n. 4
0
 public void SetUp()
 {
     this.result = "person".ParseOption();
 }
Esempio n. 5
0
        public ResultsModel GetAssemblyFailsMeasuresReport(DateTime fromDate, DateTime toDate, AssemblyFailGroupBy groupBy)
        {
            var reportLayout = new ValuesByWeekLayout(this.reportingHelper, this.GenerateReportTitle(groupBy));
            var weeks        = this.linnWeekService.GetWeeks(fromDate, toDate).ToList();

            reportLayout.AddWeeks(
                weeks.Select(
                    w => new AxisDetailsModel(w.LinnWeekNumber.ToString(), w.WeekEndingDDMON)
            {
                SortOrder = w.LinnWeekNumber
            }));
            var fails = this.assemblyFailsRepository.FilterBy(a => a.DateTimeFound >= fromDate && a.DateTimeFound <= toDate);

            var calculatedValues = this.CalculatedValues(fails, groupBy, weeks);

            calculatedValues = calculatedValues.Where(v => !string.IsNullOrWhiteSpace(v.RowId));
            reportLayout.AddData(calculatedValues);

            var model = reportLayout.GetResultsModel();

            this.reportingHelper.SortRowsByColumnValue(model, model.ColumnIndex("Total"), true);
            model.ValueDrillDownTemplates.Add(
                new DrillDownModel(
                    "Details",
                    this.GenerateValueDrillDown(groupBy, fromDate, toDate),
                    null,
                    model.ColumnIndex("Total")));
            model.ColumnDrillDownTemplates.Add(
                new DrillDownModel(
                    "Details",
                    this.GenerateColumnDrillDown(groupBy, fromDate, toDate),
                    null,
                    model.ColumnIndex("Total")));
            return(model);
        }
Esempio n. 6
0
        private IEnumerable <CalculationValueModel> CalculatedValues(
            IEnumerable <AssemblyFail> fails,
            AssemblyFailGroupBy groupBy,
            IReadOnlyCollection <LinnWeek> weeks)
        {
            switch (groupBy)
            {
            case AssemblyFailGroupBy.BoardPartNumber:
                return(fails.Select(
                           f => new CalculationValueModel
                {
                    RowId = f.BoardPartNumber ?? string.Empty,
                    ColumnId = this.linnWeekService.GetWeek(f.DateTimeFound, weeks).LinnWeekNumber.ToString(),
                    Quantity = f.NumberOfFails
                }));

            case AssemblyFailGroupBy.FaultCode:
                return(fails.Select(
                           f => new CalculationValueModel
                {
                    RowId = f.FaultCode?.FaultCode ?? string.Empty,
                    RowTitle = f.FaultCode?.Description,
                    ColumnId = this.linnWeekService.GetWeek(f.DateTimeFound, weeks).LinnWeekNumber.ToString(),
                    Quantity = f.NumberOfFails
                }));

            case AssemblyFailGroupBy.Board:
                return(fails.Select(
                           f => new CalculationValueModel
                {
                    RowId = string.IsNullOrEmpty(f.BoardPartNumber) ? string.Empty : f.BoardPartNumber.IndexOf('/') >= 0 ? f.BoardPartNumber.Substring(0, f.BoardPartNumber.IndexOf('/')) : f.BoardPartNumber,
                    ColumnId = this.linnWeekService.GetWeek(f.DateTimeFound, weeks).LinnWeekNumber.ToString(),
                    Quantity = f.NumberOfFails
                }));

            case AssemblyFailGroupBy.CitCode:
                return(fails.Select(
                           f => new CalculationValueModel
                {
                    RowId = f.CitResponsible?.Code ?? string.Empty,
                    RowTitle = f.CitResponsible?.Name,
                    ColumnId = this.linnWeekService.GetWeek(f.DateTimeFound, weeks).LinnWeekNumber.ToString(),
                    Quantity = f.NumberOfFails
                }));

            case AssemblyFailGroupBy.CircuitPartNumber:
                return(fails.Select(
                           f => new CalculationValueModel
                {
                    RowId = f.CircuitPart ?? string.Empty,
                    ColumnId = this.linnWeekService.GetWeek(f.DateTimeFound, weeks).LinnWeekNumber.ToString(),
                    Quantity = f.NumberOfFails
                }));

            case AssemblyFailGroupBy.Person:
                return(fails.Select(
                           f => new CalculationValueModel
                {
                    RowId = f.PersonResponsible?.Id.ToString() ?? string.Empty,
                    RowTitle = f.PersonResponsible?.FullName ?? string.Empty,
                    ColumnId = this.linnWeekService.GetWeek(f.DateTimeFound, weeks).LinnWeekNumber.ToString(),
                    Quantity = f.NumberOfFails
                }));

            default:
                throw new ArgumentOutOfRangeException(nameof(groupBy), groupBy, null);
            }
        }
Esempio n. 7
0
 private string GenerateReportTitle(AssemblyFailGroupBy groupBy)
 {
     return($"Assembly Fails Measures Grouped By {Regex.Replace(groupBy.ToString(), "(\\B[A-Z])", " $1")}");
 }
Esempio n. 8
0
 private string GenerateColumnDrillDown(AssemblyFailGroupBy groupBy, DateTime fromDate, DateTime toDate)
 {
     return($"/production/reports/assembly-fails-details/report?parentGroupBy={groupBy.ParseOption()}&fromDate={WebUtility.UrlEncode(fromDate.ToString("o"))}&toDate={WebUtility.UrlEncode(toDate.ToString("o"))}");
 }
Esempio n. 9
0
 private string GenerateValueDrillDown(AssemblyFailGroupBy groupBy, DateTime fromDate, DateTime toDate)
 {
     return($"/production/reports/assembly-fails-details/report?{char.ToLowerInvariant(groupBy.ToString()[0]) + groupBy.ToString().Substring(1)}={{rowId}}&parentGroupBy={groupBy.ParseOption()}&fromDate={WebUtility.UrlEncode(fromDate.ToString("o"))}&toDate={WebUtility.UrlEncode(toDate.ToString("o"))}");
 }
 public void SetUp()
 {
     this.result = "circuit-part-number".ParseOption();
 }
 public void SetUp()
 {
     this.result = "fault".ParseOption();
 }