diff --git a/ServiceStation/ServiceStationBusinessLogic/BusinessLogics/ExecutorReportLogic.cs b/ServiceStation/ServiceStationBusinessLogic/BusinessLogics/ExecutorReportLogic.cs index 476a53a..d31683c 100644 --- a/ServiceStation/ServiceStationBusinessLogic/BusinessLogics/ExecutorReportLogic.cs +++ b/ServiceStation/ServiceStationBusinessLogic/BusinessLogics/ExecutorReportLogic.cs @@ -72,7 +72,7 @@ namespace ServiceStationBusinessLogic.BusinessLogics } return allList; } - public List GetCars(ReportBindingModel model) + public List GetCars(ReportExecutorBindingModel model) { List allList = new List(); @@ -116,17 +116,17 @@ namespace ServiceStationBusinessLogic.BusinessLogics return allList; } - public void SaveComponentsToWordFile(ReportBindingModel model) + public void SaveWorkByCarsWordFile(ReportExecutorBindingModel model) { throw new NotImplementedException(); } - public void SaveOrdersToPdfFile(ReportBindingModel model) + public void SaveTechWorkAndRepairsByCarsToPdfFile(ReportExecutorBindingModel model) { throw new NotImplementedException(); } - public void SaveRepairComponentToExcelFile(ReportBindingModel model) + public void SaveWorkByCarsToExcelFile(ReportExecutorBindingModel model) { throw new NotImplementedException(); } diff --git a/ServiceStation/ServiceStationBusinessLogic/BusinessLogics/GuarantorReportLogic.cs b/ServiceStation/ServiceStationBusinessLogic/BusinessLogics/GuarantorReportLogic.cs new file mode 100644 index 0000000..25bc54d --- /dev/null +++ b/ServiceStation/ServiceStationBusinessLogic/BusinessLogics/GuarantorReportLogic.cs @@ -0,0 +1,133 @@ +using ServiceStationContracts.BindingModels; +using ServiceStationContracts.BusinessLogicsContracts; +using ServiceStationContracts.SearchModels; +using ServiceStationContracts.StoragesContracts; +using ServiceStationContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ServiceStationBusinessLogic.BusinessLogics +{ + public class GuarantorReportLogic : IGuarantorReportLogic + { + private readonly IDefectStorage _defectStorage; + private readonly ISparePartStorage _sparepartStorage; + private readonly IRepairStorage _repairStorage; + private readonly ITechnicalWorkStorage _techWorkStorage; + + public GuarantorReportLogic(IDefectStorage defectStorage, ISparePartStorage sparepartStorage, IRepairStorage repairStorage, ITechnicalWorkStorage techWorkStorage) + { + _defectStorage = defectStorage; + _sparepartStorage = sparepartStorage; + _repairStorage = repairStorage; + _techWorkStorage = techWorkStorage; + } + + public List GetDefects(List Ids) + { + if (Ids == null) return new List(); + + List allList = new List(); + + var defects = _defectStorage.GetFullList(); + List spareparts = new List(); + foreach (var sparepartId in Ids) + { + var sparepart = _sparepartStorage.GetElement(new SparePartSearchModel + { + Id = sparepartId, + }); + if (sparepart != null) + { + spareparts.Add(sparepart); + } + } + + foreach (var sparepart in spareparts) + { + var rec = new ReportDefectsViewModel + { + SparePartName = sparepart.SparePartName, + DefectsInfo = new List<(string, double)>() + }; + foreach (var defect in defects) + { + var repair = _repairStorage.GetElement(new RepairSearchModel + { + Id = defect.RepairId, + }); + foreach (var repSpareParts in repair.RepairSpareParts.Values) + { + if (repSpareParts.Id == sparepart.Id) + { + rec.DefectsInfo.Add(new(defect.DefectType, defect.DefectPrice)); + } + } + } + allList.Add(rec); + } + return allList; + } + + public List GetSpareParts(ReportGuarantorBindingModel model) + { + List allList = new List(); + + List repairList = _repairStorage.GetFilteredList(new RepairSearchModel + { + DateFrom = model.DateFrom, + DateTo = model.DateTo, + }); + + foreach (var repair in repairList) + { + foreach (var sparepart in repair.RepairSpareParts.Values) + { + allList.Add(new ReportSparePartsViewModel + { + SparePartName = sparepart.SparePartName, + SparePartPrice = sparepart.SparePartPrice, + RepairName = repair.RepairName, + RepairStartDate = repair.RepairStartDate, + RepairPrice = repair.RepairPrice, + }); + } + } + + List techWorkList = _techWorkStorage.GetFilteredList(new TechnicalWorkSearchModel + { + DateFrom = model.DateFrom, + DateTo = model.DateTo, + }); + + foreach (var techWork in techWorkList) + { + allList.Add(new ReportSparePartsViewModel + { + WorkType = techWork.WorkType, + TechnicalWorkDate = techWork.DateStartWork, + TechnicalWorkPrice = techWork.WorkPrice, + }); + } + return allList; + } + + public void SaveDefectsToWordFile(ReportGuarantorBindingModel model) + { + throw new NotImplementedException(); + } + + public void SaveDefectsToExcelFile(ReportGuarantorBindingModel model) + { + throw new NotImplementedException(); + } + + public void SaveSparePartsToPdfFile(ReportGuarantorBindingModel model) + { + throw new NotImplementedException(); + } + } +} diff --git a/ServiceStation/ServiceStationContracts/BindingModels/ReportBindingModel.cs b/ServiceStation/ServiceStationContracts/BindingModels/ReportExecutorBindingModel.cs similarity index 89% rename from ServiceStation/ServiceStationContracts/BindingModels/ReportBindingModel.cs rename to ServiceStation/ServiceStationContracts/BindingModels/ReportExecutorBindingModel.cs index 69e8160..a145751 100644 --- a/ServiceStation/ServiceStationContracts/BindingModels/ReportBindingModel.cs +++ b/ServiceStation/ServiceStationContracts/BindingModels/ReportExecutorBindingModel.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace ServiceStationContracts.BindingModels { - public class ReportBindingModel + public class ReportExecutorBindingModel { public string FileName { get; set; } = string.Empty; diff --git a/ServiceStation/ServiceStationContracts/BindingModels/ReportGuarantorBindingModel.cs b/ServiceStation/ServiceStationContracts/BindingModels/ReportGuarantorBindingModel.cs new file mode 100644 index 0000000..a53c25f --- /dev/null +++ b/ServiceStation/ServiceStationContracts/BindingModels/ReportGuarantorBindingModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ServiceStationContracts.BindingModels +{ + public class ReportGuarantorBindingModel + { + public string FileName { get; set; } = string.Empty; + public DateTime? DateFrom { get; set; } + public DateTime? DateTo { get; set; } + public int GuarantorId { get; set; } + } +} diff --git a/ServiceStation/ServiceStationContracts/BusinessLogicsContracts/IExecutorReportLogic.cs b/ServiceStation/ServiceStationContracts/BusinessLogicsContracts/IExecutorReportLogic.cs index c1510ec..d65c394 100644 --- a/ServiceStation/ServiceStationContracts/BusinessLogicsContracts/IExecutorReportLogic.cs +++ b/ServiceStation/ServiceStationContracts/BusinessLogicsContracts/IExecutorReportLogic.cs @@ -11,12 +11,12 @@ namespace ServiceStationContracts.BusinessLogicsContracts public interface IExecutorReportLogic { List GetWorks(List Ids); - List GetCars(ReportBindingModel model); + List GetCars(ReportExecutorBindingModel model); - void SaveComponentsToWordFile(ReportBindingModel model); + void SaveWorkByCarsWordFile(ReportExecutorBindingModel model); - void SaveRepairComponentToExcelFile(ReportBindingModel model); + void SaveWorkByCarsToExcelFile(ReportExecutorBindingModel model); - void SaveOrdersToPdfFile(ReportBindingModel model); + void SaveTechWorkAndRepairsByCarsToPdfFile(ReportExecutorBindingModel model); } } diff --git a/ServiceStation/ServiceStationContracts/BusinessLogicsContracts/IGuarantorReportLogic.cs b/ServiceStation/ServiceStationContracts/BusinessLogicsContracts/IGuarantorReportLogic.cs new file mode 100644 index 0000000..3a0ccff --- /dev/null +++ b/ServiceStation/ServiceStationContracts/BusinessLogicsContracts/IGuarantorReportLogic.cs @@ -0,0 +1,22 @@ +using ServiceStationContracts.BindingModels; +using ServiceStationContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ServiceStationContracts.BusinessLogicsContracts +{ + public interface IGuarantorReportLogic + { + List GetDefects(List Ids); + List GetSpareParts(ReportGuarantorBindingModel model); + + void SaveDefectsToWordFile(ReportGuarantorBindingModel model); + + void SaveDefectsToExcelFile(ReportGuarantorBindingModel model); + + void SaveSparePartsToPdfFile(ReportGuarantorBindingModel model); + } +} diff --git a/ServiceStation/ServiceStationContracts/ViewModels/ReportDefectsViewModel.cs b/ServiceStation/ServiceStationContracts/ViewModels/ReportDefectsViewModel.cs new file mode 100644 index 0000000..9be1063 --- /dev/null +++ b/ServiceStation/ServiceStationContracts/ViewModels/ReportDefectsViewModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ServiceStationContracts.ViewModels +{ + public class ReportDefectsViewModel + { + public string SparePartName { get; set; } = string.Empty; + public List<(string, double)> DefectsInfo { get; set; } = new(); + } +} diff --git a/ServiceStation/ServiceStationContracts/ViewModels/ReportSparePartsViewModel.cs b/ServiceStation/ServiceStationContracts/ViewModels/ReportSparePartsViewModel.cs new file mode 100644 index 0000000..2a09821 --- /dev/null +++ b/ServiceStation/ServiceStationContracts/ViewModels/ReportSparePartsViewModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ServiceStationContracts.ViewModels +{ + public class ReportSparePartsViewModel + { + public string SparePartName { get; set; } = string.Empty; + public double SparePartPrice { get; set; } + public string RepairName { get; set; } = string.Empty; + public DateTime? RepairStartDate { get; set; } = DateTime.Now; + public double RepairPrice { get; set; } + public string WorkType { get; set; } = string.Empty; + public DateTime? TechnicalWorkDate { get; set; } = DateTime.Now; + public double TechnicalWorkPrice { get; set; } + } +} diff --git a/ServiceStation/ServiceStationExecutorApp/Views/Home/Index.cshtml b/ServiceStation/ServiceStationExecutorApp/Views/Home/Index.cshtml index 67d9b8c..afbe142 100644 --- a/ServiceStation/ServiceStationExecutorApp/Views/Home/Index.cshtml +++ b/ServiceStation/ServiceStationExecutorApp/Views/Home/Index.cshtml @@ -10,7 +10,7 @@
- Табеев А.Р. Роль Поручителя      + Табеев А.П. Роль Поручителя     

Рады видеть вас на нашем сайте ^.^

diff --git a/ServiceStation/ServiceStationGuarantorApp/Views/Home/ListRepairs.cshtml b/ServiceStation/ServiceStationGuarantorApp/Views/Home/ListRepairs.cshtml index d0efdca..7efa688 100644 --- a/ServiceStation/ServiceStationGuarantorApp/Views/Home/ListRepairs.cshtml +++ b/ServiceStation/ServiceStationGuarantorApp/Views/Home/ListRepairs.cshtml @@ -15,7 +15,7 @@ Название ремонта - Статус ремонта + Дата начала ремонта Стоимость ремонта