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(); } } }