ворд и эксель
This commit is contained in:
parent
dbf37e6871
commit
dbf7368333
@ -515,6 +515,65 @@ namespace CarCenterAdministratorApp.Controllers
|
|||||||
{
|
{
|
||||||
return View();
|
return View();
|
||||||
}*/
|
}*/
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult PreSaleWorkCarReport()
|
||||||
|
{
|
||||||
|
if (APIClient.Administrator == null)
|
||||||
|
{
|
||||||
|
return Redirect("~/Home/Enter");
|
||||||
|
}
|
||||||
|
ViewBag.Cars = APIClient.GetRequest<List<CarViewModel>>($"api/main/GetCarList?Administratorid={APIClient.Administrator.Id}");
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public void PreSaleWorkCarReport(List<int> cars, string type)
|
||||||
|
{
|
||||||
|
if (APIClient.Administrator == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cars.Count <= 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Количество должно быть больше 0");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(type))
|
||||||
|
{
|
||||||
|
throw new Exception("Неверный тип отчета");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == "docx")
|
||||||
|
{
|
||||||
|
APIClient.PostRequest("api/main/createPreSaleWorklistwordfile", new ReportPreSaleWorkCarBindingModel
|
||||||
|
{
|
||||||
|
Cars = cars,
|
||||||
|
FileName = "C:\\Users\\kozlo\\Desktop\\reports\\wordfile.docx"
|
||||||
|
});
|
||||||
|
Response.Redirect("GetWordFile");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
APIClient.PostRequest("api/main/createPreSaleWorklistexcelfile", new ReportPreSaleWorkCarBindingModel
|
||||||
|
{
|
||||||
|
Cars = cars,
|
||||||
|
FileName = "C:\\Users\\kozlo\\Desktop\\reports\\excelfile.xlsx"
|
||||||
|
});
|
||||||
|
Response.Redirect("GetExcelFile");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult GetWordFile()
|
||||||
|
{
|
||||||
|
return new PhysicalFileResult("C:\\Users\\kozlo\\Desktop\\reports\\wordfile.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult GetExcelFile()
|
||||||
|
{
|
||||||
|
return new PhysicalFileResult("C:\\Users\\kozlo\\Desktop\\reports\\excelfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult Report()
|
public IActionResult Report()
|
||||||
|
@ -3,10 +3,43 @@
|
|||||||
@model List<CarViewModel>
|
@model List<CarViewModel>
|
||||||
|
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "ListCarEquipmentToFile";
|
ViewData["Title"] = "PreSaleWorkCarReport";
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
|
<h2 class="display-4">Создать список предпродажных работ по машинам</h2>
|
||||||
|
</div>
|
||||||
|
<form method="post">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Машина:</div>
|
||||||
|
<div class="col-8">
|
||||||
|
<select name="cars" class="form-control" multiple size="5" id="cars">
|
||||||
|
@foreach (var service in ViewBag.Cars)
|
||||||
|
{
|
||||||
|
<option value="@service.Id">@service.BrandCar</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="file-format">
|
||||||
|
<label class="form-label">Выберите формат файла:</label>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="type" value="docx" id="docx">
|
||||||
|
<label class="form-check-label" for="docx">Word-файл</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="type" value="xlsx" id="xlsx" checked>
|
||||||
|
<label class="form-check-label" for="xlsx">Excel-файл</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-center">
|
||||||
|
<button type="submit" class="btn btn-block btn-outline-dark w-100">Создать</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@* <div class="text-center">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h2>Создание отчета по машинам</h2>
|
<h2>Создание отчета по машинам</h2>
|
||||||
</div>
|
</div>
|
||||||
@ -44,5 +77,5 @@
|
|||||||
<button type="submit" class="btn btn-block btn-outline-dark w-100">Создать</button>
|
<button type="submit" class="btn btn-block btn-outline-dark w-100">Создать</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div> *@
|
||||||
|
|
@ -41,7 +41,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
|
<ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
|
||||||
|
|
||||||
<li><a class="nav-link " asp-area="" asp-controller="Home" asp-action="ListCarEquipmentToFile">Отчет (word/excel) </a></li>
|
<li><a class="nav-link " asp-area="" asp-controller="Home" asp-action="PreSaleWorkCarReport">Отчет (word/excel) </a></li>
|
||||||
<li><a class="nav-link " asp-area="" asp-controller="Home" asp-action="Report">Отчет (pdf) </a></li>
|
<li><a class="nav-link " asp-area="" asp-controller="Home" asp-action="Report">Отчет (pdf) </a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -15,42 +15,42 @@ namespace CarCenterBusinessLogic.BusinessLogics
|
|||||||
public class ReportLogicAdministrator : IReportLogicAdministrator
|
public class ReportLogicAdministrator : IReportLogicAdministrator
|
||||||
{
|
{
|
||||||
private readonly ICarStorage _carStorage;
|
private readonly ICarStorage _carStorage;
|
||||||
/*private readonly AbstractSaveToExcelDoctor _saveToExcel;
|
private readonly AbstractSaveToExcelAdministrator _saveToExcel;
|
||||||
private readonly AbstractSaveToWordDoctor _saveToWord;*/
|
private readonly AbstractSaveToWordAdministrator _saveToWord;
|
||||||
private readonly AbstractSaveToPdfAdministrator _saveToPdf;
|
private readonly AbstractSaveToPdfAdministrator _saveToPdf;
|
||||||
|
|
||||||
public ReportLogicAdministrator(ICarStorage carStorage,
|
public ReportLogicAdministrator(ICarStorage carStorage,
|
||||||
/*AbstractSaveToExcelDoctor saveToExcel, AbstractSaveToWordDoctor saveToWord,*/ AbstractSaveToPdfAdministrator saveToPdf)
|
AbstractSaveToExcelAdministrator saveToExcel, AbstractSaveToWordAdministrator saveToWord, AbstractSaveToPdfAdministrator saveToPdf)
|
||||||
{
|
{
|
||||||
_carStorage = carStorage;
|
_carStorage = carStorage;
|
||||||
/*_saveToExcel = saveToExcel;
|
_saveToExcel = saveToExcel;
|
||||||
_saveToWord = saveToWord;*/
|
_saveToWord = saveToWord;
|
||||||
_saveToPdf = saveToPdf;
|
_saveToPdf = saveToPdf;
|
||||||
}
|
}
|
||||||
/*public void SavePurchasesToExcelFile(ReportPurchaseMedicationBindingModel model)
|
public void SavePreSaleWorksToExcelFile(ReportPreSaleWorkCarBindingModel model)
|
||||||
{
|
{
|
||||||
_saveToExcel.CreateReport(new ExcelInfoDoctor
|
_saveToExcel.CreateReport(new ExcelInfoAdministrator
|
||||||
{
|
{
|
||||||
FileName = model.FileName,
|
FileName = model.FileName,
|
||||||
Title = "Список покупок по медикаментам",
|
Title = "Список предпродажных работ по машинам",
|
||||||
PurchaseMedications = GetPurchaseMedications(model)
|
PreSaleWorkCars = GetPreSaleWorkCars(model)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SavePurchasesToWordFile(ReportPurchaseMedicationBindingModel model)
|
public void SavePreSaleWorksToWordFile(ReportPreSaleWorkCarBindingModel model)
|
||||||
{
|
{
|
||||||
_saveToWord.CreateDoc(new WordInfoDoctor
|
_saveToWord.CreateDoc(new WordInfoAdministrator
|
||||||
{
|
{
|
||||||
FileName = model.FileName,
|
FileName = model.FileName,
|
||||||
Title = "Список покупок по медикаментам",
|
Title = "Список покупок по медикаментам",
|
||||||
PurchaseMedications = GetPurchaseMedications(model)
|
PreSaleWorkCars = GetPreSaleWorkCars(model)
|
||||||
});
|
});
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/*public List<ReportPurchaseMedicationViewModel> GetPurchaseMedications(ReportPurchaseMedicationBindingModel model)
|
public List<ReportPreSaleWorkCarViewModel> GetPreSaleWorkCars(ReportPreSaleWorkCarBindingModel model)
|
||||||
{
|
{
|
||||||
return _medicationStorage.GetReportMedicationPurchasesList(new() { medicationsIds = model.Medications });
|
return _carStorage.GetReportCarPreSaleWorksList(new() { carsIds = model.Cars });
|
||||||
}*/
|
}
|
||||||
public List<ReportEquipmentsEmployeesViewModel> GetEquipmentsEmployees(ReportEquipmentsEmployeesBindingModel model)
|
public List<ReportEquipmentsEmployeesViewModel> GetEquipmentsEmployees(ReportEquipmentsEmployeesBindingModel model)
|
||||||
{
|
{
|
||||||
return _carStorage.GetReportEquipmentsEmployees(new() { DateFrom = model.DateFrom, DateTo = model.DateTo });
|
return _carStorage.GetReportEquipmentsEmployees(new() { DateFrom = model.DateFrom, DateTo = model.DateTo });
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperEnums;
|
||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage
|
||||||
|
{
|
||||||
|
public abstract class AbstractSaveToExcelAdministrator
|
||||||
|
{
|
||||||
|
public void CreateReport(ExcelInfoAdministrator info)
|
||||||
|
{
|
||||||
|
CreateExcel(info);
|
||||||
|
|
||||||
|
InsertCellInWorksheet(new ExcelCellParameters
|
||||||
|
{
|
||||||
|
ColumnName = "A",
|
||||||
|
RowIndex = 1,
|
||||||
|
Text = info.Title,
|
||||||
|
StyleInfo = ExcelStyleInfoType.Title
|
||||||
|
});
|
||||||
|
|
||||||
|
MergeCells(new ExcelMergeParameters
|
||||||
|
{
|
||||||
|
CellFromName = "A1",
|
||||||
|
CellToName = "C1"
|
||||||
|
});
|
||||||
|
|
||||||
|
uint rowIndex = 2;
|
||||||
|
|
||||||
|
foreach (var rec in info.PreSaleWorkCars)
|
||||||
|
{
|
||||||
|
InsertCellInWorksheet(new ExcelCellParameters
|
||||||
|
{
|
||||||
|
ColumnName = "A",
|
||||||
|
RowIndex = rowIndex,
|
||||||
|
Text = rec.BrandCar,
|
||||||
|
StyleInfo = ExcelStyleInfoType.Text
|
||||||
|
});
|
||||||
|
|
||||||
|
rowIndex++;
|
||||||
|
|
||||||
|
foreach (var car in rec.PreSaleWorks)
|
||||||
|
{
|
||||||
|
InsertCellInWorksheet(new ExcelCellParameters
|
||||||
|
{
|
||||||
|
ColumnName = "B",
|
||||||
|
RowIndex = rowIndex,
|
||||||
|
Text = car.PreSaleWorkType.ToString(),
|
||||||
|
StyleInfo = ExcelStyleInfoType.TextWithBroder
|
||||||
|
});
|
||||||
|
|
||||||
|
rowIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
rowIndex++;
|
||||||
|
}
|
||||||
|
SaveExcel(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void CreateExcel(ExcelInfoAdministrator info);
|
||||||
|
|
||||||
|
protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams);
|
||||||
|
|
||||||
|
protected abstract void MergeCells(ExcelMergeParameters excelParams);
|
||||||
|
|
||||||
|
protected abstract void SaveExcel(ExcelInfoAdministrator info);
|
||||||
|
}
|
||||||
|
}
|
@ -1,22 +0,0 @@
|
|||||||
using CarCenterBusinessLogic.OfficePackage.HelperModels;
|
|
||||||
|
|
||||||
namespace CarCenterBusinessLogic.OfficePackage
|
|
||||||
{
|
|
||||||
public abstract class AbstractSaveToPdf
|
|
||||||
{
|
|
||||||
/// Создание pdf-файла
|
|
||||||
protected abstract void CreatePdf(PdfInfo info);
|
|
||||||
|
|
||||||
/// Создание параграфа с текстом
|
|
||||||
protected abstract void CreateParagraph(PdfParagraph paragraph);
|
|
||||||
|
|
||||||
/// Создание таблицы
|
|
||||||
protected abstract void CreateTable(List<string> columns);
|
|
||||||
|
|
||||||
/// Создание и заполнение строки
|
|
||||||
protected abstract void CreateRow(PdfRowParameters rowParameters);
|
|
||||||
|
|
||||||
/// Сохранение файла
|
|
||||||
protected abstract void SavePdf(PdfInfo info);
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,61 @@
|
|||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperEnums;
|
||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage
|
||||||
|
{
|
||||||
|
public abstract class AbstractSaveToWordAdministrator
|
||||||
|
{
|
||||||
|
public void CreateDoc(WordInfoAdministrator info)
|
||||||
|
{
|
||||||
|
CreateWord(info);
|
||||||
|
|
||||||
|
CreateParagraph(new WordParagraph
|
||||||
|
{
|
||||||
|
Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24", }) },
|
||||||
|
TextProperties = new WordTextProperties
|
||||||
|
{
|
||||||
|
Size = "24",
|
||||||
|
JustificationType = WordJustificationType.Center
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach (var rec in info.PreSaleWorkCars)
|
||||||
|
{
|
||||||
|
CreateParagraph(new WordParagraph
|
||||||
|
{
|
||||||
|
Texts = new List<(string, WordTextProperties)>
|
||||||
|
{ (rec.BrandCar, new WordTextProperties { Size = "24", Bold=true})},
|
||||||
|
TextProperties = new WordTextProperties
|
||||||
|
{
|
||||||
|
Size = "24",
|
||||||
|
JustificationType = WordJustificationType.Both
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach (var car in rec.PreSaleWorks)
|
||||||
|
{
|
||||||
|
CreateParagraph(new WordParagraph
|
||||||
|
{
|
||||||
|
Texts = new List<(string, WordTextProperties)>
|
||||||
|
{ (car.PreSaleWorkType.ToString(), new WordTextProperties { Size = "20", Bold=false})},
|
||||||
|
TextProperties = new WordTextProperties
|
||||||
|
{
|
||||||
|
Size = "24",
|
||||||
|
JustificationType = WordJustificationType.Both
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SaveWord(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void CreateWord(WordInfoAdministrator info);
|
||||||
|
protected abstract void CreateParagraph(WordParagraph paragraph);
|
||||||
|
protected abstract void SaveWord(WordInfoAdministrator info);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperEnums
|
||||||
|
{
|
||||||
|
public enum ExcelStyleInfoType
|
||||||
|
{
|
||||||
|
Title,
|
||||||
|
Text,
|
||||||
|
TextWithBroder
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperEnums
|
||||||
|
{
|
||||||
|
public enum WordJustificationType
|
||||||
|
{
|
||||||
|
Center,
|
||||||
|
Both
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperEnums;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperModels
|
||||||
|
{
|
||||||
|
public class ExcelCellParameters
|
||||||
|
{
|
||||||
|
public string ColumnName { get; set; } = string.Empty;
|
||||||
|
public uint RowIndex { get; set; }
|
||||||
|
public string Text { get; set; } = string.Empty;
|
||||||
|
public string CellReference => $"{ColumnName}{RowIndex}";
|
||||||
|
public ExcelStyleInfoType StyleInfo { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using CarCenterContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperModels
|
||||||
|
{
|
||||||
|
public class ExcelInfoAdministrator
|
||||||
|
{
|
||||||
|
public string FileName { get; set; } = string.Empty;
|
||||||
|
public string Title { get; set; } = string.Empty;
|
||||||
|
public List<ReportPreSaleWorkCarViewModel> PreSaleWorkCars { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperModels
|
||||||
|
{
|
||||||
|
public class ExcelMergeParameters
|
||||||
|
{
|
||||||
|
public string CellFromName { get; set; } = string.Empty;
|
||||||
|
public string CellToName { get; set; } = string.Empty;
|
||||||
|
public string Merge => $"{CellFromName}:{CellToName}";
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using CarCenterContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperModels
|
||||||
|
{
|
||||||
|
public class WordInfoAdministrator
|
||||||
|
{
|
||||||
|
public string FileName { get; set; } = string.Empty;
|
||||||
|
public string Title { get; set; } = string.Empty;
|
||||||
|
public List<ReportPreSaleWorkCarViewModel> PreSaleWorkCars { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperModels
|
||||||
|
{
|
||||||
|
public class WordParagraph
|
||||||
|
{
|
||||||
|
public List<(string, WordTextProperties)> Texts { get; set; } = new();
|
||||||
|
public WordTextProperties? TextProperties { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperEnums;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.HelperModels
|
||||||
|
{
|
||||||
|
public class WordTextProperties
|
||||||
|
{
|
||||||
|
public string Size { get; set; } = string.Empty;
|
||||||
|
public bool Bold { get; set; }
|
||||||
|
public WordJustificationType JustificationType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,333 @@
|
|||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperEnums;
|
||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperModels;
|
||||||
|
using DocumentFormat.OpenXml.Office2010.Excel;
|
||||||
|
using DocumentFormat.OpenXml.Office2013.Excel;
|
||||||
|
using DocumentFormat.OpenXml.Packaging;
|
||||||
|
using DocumentFormat.OpenXml.Spreadsheet;
|
||||||
|
using DocumentFormat.OpenXml;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.Implements
|
||||||
|
{
|
||||||
|
public class SaveToExcelAdministrator : AbstractSaveToExcelAdministrator
|
||||||
|
{
|
||||||
|
private SpreadsheetDocument? _spreadsheetDocument;
|
||||||
|
private SharedStringTablePart? _shareStringPart;
|
||||||
|
private Worksheet? _worksheet;
|
||||||
|
|
||||||
|
private static void CreateStyles(WorkbookPart workbookpart)
|
||||||
|
{
|
||||||
|
var sp = workbookpart.AddNewPart<WorkbookStylesPart>();
|
||||||
|
sp.Stylesheet = new Stylesheet();
|
||||||
|
|
||||||
|
var fonts = new Fonts() { Count = 2U, KnownFonts = true };
|
||||||
|
|
||||||
|
var fontUsual = new Font();
|
||||||
|
fontUsual.Append(new FontSize() { Val = 12D });
|
||||||
|
fontUsual.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color() { Theme = 1U });
|
||||||
|
fontUsual.Append(new FontName() { Val = "Times New Roman" });
|
||||||
|
fontUsual.Append(new FontFamilyNumbering() { Val = 2 });
|
||||||
|
fontUsual.Append(new FontScheme() { Val = FontSchemeValues.Minor });
|
||||||
|
|
||||||
|
var fontTitle = new Font();
|
||||||
|
fontTitle.Append(new Bold());
|
||||||
|
fontTitle.Append(new FontSize() { Val = 14D });
|
||||||
|
fontTitle.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color() { Theme = 1U });
|
||||||
|
fontTitle.Append(new FontName() { Val = "Times New Roman" });
|
||||||
|
fontTitle.Append(new FontFamilyNumbering() { Val = 2 });
|
||||||
|
fontTitle.Append(new FontScheme() { Val = FontSchemeValues.Minor });
|
||||||
|
|
||||||
|
fonts.Append(fontUsual);
|
||||||
|
fonts.Append(fontTitle);
|
||||||
|
|
||||||
|
var fills = new Fills() { Count = 2U };
|
||||||
|
|
||||||
|
var fill1 = new Fill();
|
||||||
|
fill1.Append(new PatternFill() { PatternType = PatternValues.None });
|
||||||
|
|
||||||
|
var fill2 = new Fill();
|
||||||
|
fill2.Append(new PatternFill() { PatternType = PatternValues.Gray125 });
|
||||||
|
|
||||||
|
fills.Append(fill1);
|
||||||
|
fills.Append(fill2);
|
||||||
|
|
||||||
|
var borders = new Borders() { Count = 2U };
|
||||||
|
|
||||||
|
var borderNoBorder = new Border();
|
||||||
|
borderNoBorder.Append(new LeftBorder());
|
||||||
|
borderNoBorder.Append(new RightBorder());
|
||||||
|
borderNoBorder.Append(new TopBorder());
|
||||||
|
borderNoBorder.Append(new BottomBorder());
|
||||||
|
borderNoBorder.Append(new DiagonalBorder());
|
||||||
|
|
||||||
|
var borderThin = new Border();
|
||||||
|
|
||||||
|
var leftBorder = new LeftBorder() { Style = BorderStyleValues.Thin };
|
||||||
|
leftBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color() { Indexed = 64U });
|
||||||
|
|
||||||
|
var rightBorder = new RightBorder() { Style = BorderStyleValues.Thin };
|
||||||
|
rightBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color() { Indexed = 64U });
|
||||||
|
|
||||||
|
var topBorder = new TopBorder() { Style = BorderStyleValues.Thin };
|
||||||
|
topBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color() { Indexed = 64U });
|
||||||
|
|
||||||
|
var bottomBorder = new BottomBorder() { Style = BorderStyleValues.Thin };
|
||||||
|
bottomBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color() { Indexed = 64U });
|
||||||
|
|
||||||
|
borderThin.Append(leftBorder);
|
||||||
|
borderThin.Append(rightBorder);
|
||||||
|
borderThin.Append(topBorder);
|
||||||
|
borderThin.Append(bottomBorder);
|
||||||
|
borderThin.Append(new DiagonalBorder());
|
||||||
|
|
||||||
|
borders.Append(borderNoBorder);
|
||||||
|
borders.Append(borderThin);
|
||||||
|
|
||||||
|
var cellStyleFormats = new CellStyleFormats()
|
||||||
|
{
|
||||||
|
Count = 1U
|
||||||
|
};
|
||||||
|
var cellFormatStyle = new CellFormat()
|
||||||
|
{
|
||||||
|
NumberFormatId = 0U,
|
||||||
|
FontId = 0U,
|
||||||
|
FillId = 0U,
|
||||||
|
BorderId = 0U
|
||||||
|
};
|
||||||
|
|
||||||
|
cellStyleFormats.Append(cellFormatStyle);
|
||||||
|
|
||||||
|
var cellFormats = new CellFormats()
|
||||||
|
{
|
||||||
|
Count = 3U
|
||||||
|
};
|
||||||
|
var cellFormatFont = new CellFormat()
|
||||||
|
{
|
||||||
|
NumberFormatId = 0U,
|
||||||
|
FontId = 0U,
|
||||||
|
FillId = 0U,
|
||||||
|
BorderId = 0U,
|
||||||
|
FormatId = 0U,
|
||||||
|
ApplyFont = true
|
||||||
|
};
|
||||||
|
var cellFormatFontAndBorder = new CellFormat()
|
||||||
|
{
|
||||||
|
NumberFormatId = 0U,
|
||||||
|
FontId = 0U,
|
||||||
|
FillId = 0U,
|
||||||
|
BorderId = 1U,
|
||||||
|
FormatId = 0U,
|
||||||
|
ApplyFont = true,
|
||||||
|
ApplyBorder = true
|
||||||
|
};
|
||||||
|
var cellFormatTitle = new CellFormat()
|
||||||
|
{
|
||||||
|
NumberFormatId = 0U,
|
||||||
|
FontId = 1U,
|
||||||
|
FillId = 0U,
|
||||||
|
BorderId = 0U,
|
||||||
|
FormatId = 0U,
|
||||||
|
Alignment = new Alignment()
|
||||||
|
{
|
||||||
|
Vertical = VerticalAlignmentValues.Center,
|
||||||
|
WrapText = true,
|
||||||
|
Horizontal = HorizontalAlignmentValues.Center
|
||||||
|
},
|
||||||
|
ApplyFont = true
|
||||||
|
};
|
||||||
|
cellFormats.Append(cellFormatFont);
|
||||||
|
cellFormats.Append(cellFormatFontAndBorder);
|
||||||
|
cellFormats.Append(cellFormatTitle);
|
||||||
|
var cellStyles = new CellStyles() { Count = 1U };
|
||||||
|
cellStyles.Append(new CellStyle()
|
||||||
|
{
|
||||||
|
Name = "Normal",
|
||||||
|
FormatId = 0U,
|
||||||
|
BuiltinId = 0U
|
||||||
|
});
|
||||||
|
var differentialFormats = new DocumentFormat.OpenXml.Office2013.Excel.DifferentialFormats()
|
||||||
|
{
|
||||||
|
Count = 0U
|
||||||
|
};
|
||||||
|
|
||||||
|
var tableStyles = new TableStyles()
|
||||||
|
{
|
||||||
|
Count = 0U,
|
||||||
|
DefaultTableStyle = "TableStyleMedium2",
|
||||||
|
DefaultPivotStyle = "PivotStyleLight16"
|
||||||
|
};
|
||||||
|
var stylesheetExtensionList = new StylesheetExtensionList();
|
||||||
|
var stylesheetExtension1 = new StylesheetExtension()
|
||||||
|
{
|
||||||
|
Uri = "{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}"
|
||||||
|
};
|
||||||
|
stylesheetExtension1.AddNamespaceDeclaration("x14", "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main");
|
||||||
|
stylesheetExtension1.Append(new SlicerStyles()
|
||||||
|
{
|
||||||
|
DefaultSlicerStyle = "SlicerStyleLight1"
|
||||||
|
});
|
||||||
|
var stylesheetExtension2 = new StylesheetExtension()
|
||||||
|
{
|
||||||
|
Uri = "{9260A510-F301-46a8-8635-F512D64BE5F5}"
|
||||||
|
};
|
||||||
|
stylesheetExtension2.AddNamespaceDeclaration("x15", "http://schemas.microsoft.com/office/spreadsheetml/2010/11/main");
|
||||||
|
stylesheetExtension2.Append(new TimelineStyles()
|
||||||
|
{
|
||||||
|
DefaultTimelineStyle = "TimeSlicerStyleLight1"
|
||||||
|
});
|
||||||
|
|
||||||
|
stylesheetExtensionList.Append(stylesheetExtension1);
|
||||||
|
stylesheetExtensionList.Append(stylesheetExtension2);
|
||||||
|
|
||||||
|
sp.Stylesheet.Append(fonts);
|
||||||
|
sp.Stylesheet.Append(fills);
|
||||||
|
sp.Stylesheet.Append(borders);
|
||||||
|
sp.Stylesheet.Append(cellStyleFormats);
|
||||||
|
sp.Stylesheet.Append(cellFormats);
|
||||||
|
sp.Stylesheet.Append(cellStyles);
|
||||||
|
sp.Stylesheet.Append(differentialFormats);
|
||||||
|
sp.Stylesheet.Append(tableStyles);
|
||||||
|
sp.Stylesheet.Append(stylesheetExtensionList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static uint GetStyleValue(ExcelStyleInfoType styleInfo)
|
||||||
|
{
|
||||||
|
return styleInfo switch
|
||||||
|
{
|
||||||
|
ExcelStyleInfoType.Title => 2U,
|
||||||
|
ExcelStyleInfoType.TextWithBroder => 1U,
|
||||||
|
ExcelStyleInfoType.Text => 0U,
|
||||||
|
_ => 0U,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void CreateExcel(ExcelInfoAdministrator info)
|
||||||
|
{
|
||||||
|
_spreadsheetDocument = SpreadsheetDocument.Create(info.FileName, SpreadsheetDocumentType.Workbook);
|
||||||
|
var workbookpart = _spreadsheetDocument.AddWorkbookPart();
|
||||||
|
workbookpart.Workbook = new Workbook();
|
||||||
|
CreateStyles(workbookpart);
|
||||||
|
_shareStringPart = _spreadsheetDocument.WorkbookPart!.GetPartsOfType<SharedStringTablePart>().Any() ? _spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First() : _spreadsheetDocument.WorkbookPart.AddNewPart<SharedStringTablePart>();
|
||||||
|
|
||||||
|
if (_shareStringPart.SharedStringTable == null)
|
||||||
|
{
|
||||||
|
_shareStringPart.SharedStringTable = new SharedStringTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
|
||||||
|
worksheetPart.Worksheet = new Worksheet(new SheetData());
|
||||||
|
|
||||||
|
var sheets = _spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());
|
||||||
|
var sheet = new Sheet()
|
||||||
|
{
|
||||||
|
Id = _spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
|
||||||
|
SheetId = 1,
|
||||||
|
Name = "Лист"
|
||||||
|
};
|
||||||
|
sheets.Append(sheet);
|
||||||
|
_worksheet = worksheetPart.Worksheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void InsertCellInWorksheet(ExcelCellParameters excelParams)
|
||||||
|
{
|
||||||
|
if (_worksheet == null || _shareStringPart == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sheetData = _worksheet.GetFirstChild<SheetData>();
|
||||||
|
|
||||||
|
if (sheetData == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Row row;
|
||||||
|
|
||||||
|
if (sheetData.Elements<Row>().Where(r => r.RowIndex! == excelParams.RowIndex).Any())
|
||||||
|
{
|
||||||
|
row = sheetData.Elements<Row>().Where(r => r.RowIndex! == excelParams.RowIndex).First();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
row = new Row() { RowIndex = excelParams.RowIndex };
|
||||||
|
sheetData.Append(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
Cell cell;
|
||||||
|
|
||||||
|
if (row.Elements<Cell>().Where(c => c.CellReference!.Value == excelParams.CellReference).Any())
|
||||||
|
{
|
||||||
|
cell = row.Elements<Cell>().Where(c => c.CellReference!.Value == excelParams.CellReference).First();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Cell? refCell = null;
|
||||||
|
foreach (Cell rowCell in row.Elements<Cell>())
|
||||||
|
{
|
||||||
|
if (string.Compare(rowCell.CellReference!.Value, excelParams.CellReference, true) > 0)
|
||||||
|
{
|
||||||
|
refCell = rowCell;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var newCell = new Cell()
|
||||||
|
{
|
||||||
|
CellReference = excelParams.CellReference
|
||||||
|
};
|
||||||
|
row.InsertBefore(newCell, refCell);
|
||||||
|
cell = newCell;
|
||||||
|
}
|
||||||
|
|
||||||
|
_shareStringPart.SharedStringTable.AppendChild(new SharedStringItem(new Text(excelParams.Text)));
|
||||||
|
_shareStringPart.SharedStringTable.Save();
|
||||||
|
cell.CellValue = new CellValue((_shareStringPart.SharedStringTable.Elements<SharedStringItem>().Count() - 1).ToString());
|
||||||
|
cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);
|
||||||
|
cell.StyleIndex = GetStyleValue(excelParams.StyleInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void MergeCells(ExcelMergeParameters excelParams)
|
||||||
|
{
|
||||||
|
if (_worksheet == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MergeCells mergeCells;
|
||||||
|
if (_worksheet.Elements<MergeCells>().Any())
|
||||||
|
{
|
||||||
|
mergeCells = _worksheet.Elements<MergeCells>().First();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mergeCells = new MergeCells();
|
||||||
|
if (_worksheet.Elements<CustomSheetView>().Any())
|
||||||
|
{
|
||||||
|
_worksheet.InsertAfter(mergeCells, _worksheet.Elements<CustomSheetView>().First());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_worksheet.InsertAfter(mergeCells, _worksheet.Elements<SheetData>().First());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var mergeCell = new MergeCell()
|
||||||
|
{
|
||||||
|
Reference = new StringValue(excelParams.Merge)
|
||||||
|
};
|
||||||
|
mergeCells.Append(mergeCell);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void SaveExcel(ExcelInfoAdministrator info)
|
||||||
|
{
|
||||||
|
if (_spreadsheetDocument == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_spreadsheetDocument.WorkbookPart!.Workbook.Save();
|
||||||
|
_spreadsheetDocument.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,117 @@
|
|||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperEnums;
|
||||||
|
using CarCenterBusinessLogic.OfficePackage.HelperModels;
|
||||||
|
using DocumentFormat.OpenXml.Packaging;
|
||||||
|
using DocumentFormat.OpenXml.Wordprocessing;
|
||||||
|
using DocumentFormat.OpenXml;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterBusinessLogic.OfficePackage.Implements
|
||||||
|
{
|
||||||
|
public class SaveToWordAdministrator : AbstractSaveToWordAdministrator
|
||||||
|
{
|
||||||
|
private WordprocessingDocument? _wordDocument;
|
||||||
|
private Body? _docBody;
|
||||||
|
// получение типов выравнивания
|
||||||
|
private static JustificationValues GetJustificationValues(WordJustificationType type)
|
||||||
|
{
|
||||||
|
return type switch
|
||||||
|
{
|
||||||
|
WordJustificationType.Both => JustificationValues.Both,
|
||||||
|
WordJustificationType.Center => JustificationValues.Center,
|
||||||
|
_ => JustificationValues.Left,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// настройки страницы
|
||||||
|
private static SectionProperties CreateSectionProperties()
|
||||||
|
{
|
||||||
|
var properties = new SectionProperties();
|
||||||
|
var pageSize = new PageSize
|
||||||
|
{
|
||||||
|
Orient = PageOrientationValues.Portrait
|
||||||
|
};
|
||||||
|
properties.AppendChild(pageSize);
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
// задание форматирования для абзаца
|
||||||
|
private static ParagraphProperties? CreateParagraphProperties(WordTextProperties? paragraphProperties)
|
||||||
|
{
|
||||||
|
if (paragraphProperties == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var properties = new ParagraphProperties();
|
||||||
|
properties.AppendChild(new Justification()
|
||||||
|
{
|
||||||
|
Val =
|
||||||
|
GetJustificationValues(paragraphProperties.JustificationType)
|
||||||
|
});
|
||||||
|
properties.AppendChild(new SpacingBetweenLines
|
||||||
|
{
|
||||||
|
LineRule = LineSpacingRuleValues.Auto
|
||||||
|
});
|
||||||
|
properties.AppendChild(new Indentation());
|
||||||
|
var paragraphMarkRunProperties = new ParagraphMarkRunProperties();
|
||||||
|
if (!string.IsNullOrEmpty(paragraphProperties.Size))
|
||||||
|
{
|
||||||
|
paragraphMarkRunProperties.AppendChild(new FontSize
|
||||||
|
{
|
||||||
|
Val =
|
||||||
|
paragraphProperties.Size
|
||||||
|
});
|
||||||
|
}
|
||||||
|
properties.AppendChild(paragraphMarkRunProperties);
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
protected override void CreateWord(WordInfoAdministrator info)
|
||||||
|
{
|
||||||
|
_wordDocument = WordprocessingDocument.Create(info.FileName,
|
||||||
|
WordprocessingDocumentType.Document);
|
||||||
|
MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart();
|
||||||
|
mainPart.Document = new Document();
|
||||||
|
_docBody = mainPart.Document.AppendChild(new Body());
|
||||||
|
}
|
||||||
|
protected override void CreateParagraph(WordParagraph paragraph)
|
||||||
|
{
|
||||||
|
if (_docBody == null || paragraph == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var docParagraph = new Paragraph();
|
||||||
|
|
||||||
|
docParagraph.AppendChild(CreateParagraphProperties(paragraph.TextProperties));
|
||||||
|
foreach (var run in paragraph.Texts)
|
||||||
|
{
|
||||||
|
var docRun = new Run();
|
||||||
|
var properties = new RunProperties();
|
||||||
|
properties.AppendChild(new FontSize { Val = run.Item2.Size });
|
||||||
|
if (run.Item2.Bold)
|
||||||
|
{
|
||||||
|
properties.AppendChild(new Bold());
|
||||||
|
}
|
||||||
|
docRun.AppendChild(properties);
|
||||||
|
docRun.AppendChild(new Text
|
||||||
|
{
|
||||||
|
Text = run.Item1,
|
||||||
|
Space =
|
||||||
|
SpaceProcessingModeValues.Preserve
|
||||||
|
});
|
||||||
|
docParagraph.AppendChild(docRun);
|
||||||
|
}
|
||||||
|
_docBody.AppendChild(docParagraph);
|
||||||
|
}
|
||||||
|
protected override void SaveWord(WordInfoAdministrator info)
|
||||||
|
{
|
||||||
|
if (_docBody == null || _wordDocument == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_docBody.AppendChild(CreateSectionProperties());
|
||||||
|
_wordDocument.MainDocumentPart!.Document.Save();
|
||||||
|
_wordDocument.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -11,10 +11,10 @@ namespace CarCenterContracts.BusinessLogicsContracts
|
|||||||
public interface IReportLogicAdministrator
|
public interface IReportLogicAdministrator
|
||||||
{
|
{
|
||||||
List<ReportEquipmentsEmployeesViewModel> GetEquipmentsEmployees(ReportEquipmentsEmployeesBindingModel model);
|
List<ReportEquipmentsEmployeesViewModel> GetEquipmentsEmployees(ReportEquipmentsEmployeesBindingModel model);
|
||||||
/*List<ReportPurchaseMedicationViewModel> GetPurchaseMedications(ReportPurchaseMedicationBindingModel model);*/
|
List<ReportPreSaleWorkCarViewModel> GetPreSaleWorkCars(ReportPreSaleWorkCarBindingModel model);
|
||||||
|
|
||||||
/*void SavePurchasesToWordFile(ReportPurchaseMedicationBindingModel model);
|
void SavePreSaleWorksToWordFile(ReportPreSaleWorkCarBindingModel model);
|
||||||
void SavePurchasesToExcelFile(ReportPurchaseMedicationBindingModel model);*/
|
void SavePreSaleWorksToExcelFile(ReportPreSaleWorkCarBindingModel model);
|
||||||
void SaveCarsToPdfFile(ReportEquipmentsEmployeesBindingModel model);
|
void SaveCarsToPdfFile(ReportEquipmentsEmployeesBindingModel model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class ListPreSaleWorksSearchModel
|
||||||
|
{
|
||||||
|
public List<int>? carsIds { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -22,7 +22,7 @@ namespace CarCenterContracts.StoragesContracts
|
|||||||
CarViewModel? Update(CarBindingModel model);
|
CarViewModel? Update(CarBindingModel model);
|
||||||
|
|
||||||
CarViewModel? Delete(CarBindingModel model);
|
CarViewModel? Delete(CarBindingModel model);
|
||||||
/*List<ReportPurchaseMedicationViewModel> GetReportMedicationPurchasesList(ListPurchasesSearchModel model);*/
|
List<ReportPreSaleWorkCarViewModel> GetReportCarPreSaleWorksList(ListPreSaleWorksSearchModel model);
|
||||||
List<ReportEquipmentsEmployeesViewModel> GetReportEquipmentsEmployees(ReportEquipmentsEmployeesSearchModel model);
|
List<ReportEquipmentsEmployeesViewModel> GetReportEquipmentsEmployees(ReportEquipmentsEmployeesSearchModel model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarCenterContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class ReportPreSaleWorkCarViewModel
|
||||||
|
{
|
||||||
|
public string BrandCar { get; set; } = string.Empty;
|
||||||
|
public List<PreSaleWorkViewModel> PreSaleWorks { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
@ -131,6 +131,24 @@ namespace CarCenterDataBaseImplement.Implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ReportPreSaleWorkCarViewModel> GetReportCarPreSaleWorksList(ListPreSaleWorksSearchModel model)
|
||||||
|
{
|
||||||
|
if (model.carsIds == null)
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
using var context = new CarCenterDataBase();
|
||||||
|
return context.Cars
|
||||||
|
.Where(car => model.carsIds == null || model.carsIds.Contains(car.Id))
|
||||||
|
.Select(car => new ReportPreSaleWorkCarViewModel()
|
||||||
|
{
|
||||||
|
BrandCar = car.BrandCar,
|
||||||
|
/*PreSaleWorks = context.PreSaleWorks.Include(preSaleWork => preSaleWork.Equipments).ThenInclude(equipment => equipment.Cars)
|
||||||
|
.Where(preSaleWork => preSaleWork.Equipments != null && preSaleWork.Equipments.Cars.Any(m => m.CarId == car.Id))
|
||||||
|
.Select(preSaleWork => preSaleWork.GetViewModel).ToList()*/
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
public List<ReportEquipmentsEmployeesViewModel> GetReportEquipmentsEmployees(ReportEquipmentsEmployeesSearchModel model)
|
public List<ReportEquipmentsEmployeesViewModel> GetReportEquipmentsEmployees(ReportEquipmentsEmployeesSearchModel model)
|
||||||
{
|
{
|
||||||
using var context = new CarCenterDataBase();
|
using var context = new CarCenterDataBase();
|
||||||
@ -150,10 +168,6 @@ namespace CarCenterDataBaseImplement.Implements
|
|||||||
.ToList(),*/
|
.ToList(),*/
|
||||||
})
|
})
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
/*var allEquipments = context.Equipments
|
|
||||||
.Select(equipment => equipment.GetViewModel)
|
|
||||||
.ToList();*/
|
|
||||||
return per;
|
return per;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -674,6 +674,32 @@ namespace CarCenterRestApi.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public void CreatePreSaleWorkListWordFile(ReportPreSaleWorkCarBindingModel model)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_reportAdministrator.SavePreSaleWorksToWordFile(model);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void CreatePreSaleWorkListExcelFile(ReportPreSaleWorkCarBindingModel model)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_reportAdministrator.SavePreSaleWorksToExcelFile(model);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,87 +0,0 @@
|
|||||||
using CarCenterBusinessLogic.BusinessLogics;
|
|
||||||
using CarCenterBusinessLogic.MailWorker;
|
|
||||||
using CarCenterContracts.BindingModels;
|
|
||||||
using CarCenterContracts.BusinessLogicsContracts;
|
|
||||||
using CarCenterContracts.ViewModels;
|
|
||||||
using CarCenterDataBaseImplement.Models;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace CarCenterRestApi.Controllers
|
|
||||||
{
|
|
||||||
public class ReportController : Controller
|
|
||||||
{
|
|
||||||
private readonly IReportLogicAdministrator _reportAdministrator;
|
|
||||||
private readonly AbstractMailWorker _mailWorker;
|
|
||||||
public ReportController(ILogger<ReportController> logger, IReportLogicAdministrator reportAdministrator, AbstractMailWorker mailWorker)
|
|
||||||
{
|
|
||||||
_reportAdministrator = reportAdministrator;
|
|
||||||
_mailWorker = mailWorker;
|
|
||||||
}
|
|
||||||
[Microsoft.AspNetCore.Mvc.HttpGet]
|
|
||||||
public IActionResult Index(ReportLogicAdministrator reportAdministrator)
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
/*[HttpPost]
|
|
||||||
public void CreatePurchaseListWordFile(ReportPurchaseMedicationBindingModel model)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_reportDoctor.SavePurchasesToWordFile(model);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
[HttpPost]
|
|
||||||
public void CreatePurchaseListExcelFile(ReportPurchaseMedicationBindingModel model)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_reportDoctor.SavePurchasesToExcelFile(model);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
/*[HttpGet]
|
|
||||||
public List<ReportEquipmentsEmployeesViewModel> GetEquipmentsEmployeesReport(string dateFrom, string dateTo, int administratorId)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
DateTime DateFrom = DateTime.Parse(dateFrom);
|
|
||||||
DateTime DateTo = DateTime.Parse(dateTo);
|
|
||||||
ReportEquipmentsEmployeesBindingModel model = new();
|
|
||||||
model.DateFrom = DateFrom;
|
|
||||||
model.DateTo = DateTo;
|
|
||||||
model.AdministratorId = administratorId;
|
|
||||||
return _reportAdministrator.GetEquipmentsEmployees(model);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/*[HttpPost]
|
|
||||||
public void SendEquipmentsEmployeesReportToEmail(ReportEquipmentsEmployeesBindingModel model)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_reportAdministrator.SaveCarsToPdfFile(model);
|
|
||||||
_mailWorker.MailSendAsync(new MailSendInfoBindingModel
|
|
||||||
{
|
|
||||||
MailAddress = model.Email!,
|
|
||||||
Subject = "Отчет по машинам",
|
|
||||||
Text = "отчет"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
}
|
|
@ -40,6 +40,11 @@ builder.Services.AddTransient<IReportLogicAdministrator, ReportLogicAdministrato
|
|||||||
builder.Services.AddTransient<AbstractSaveToPdfAdministrator, SaveToPdfAdministrator>();
|
builder.Services.AddTransient<AbstractSaveToPdfAdministrator, SaveToPdfAdministrator>();
|
||||||
builder.Services.AddSingleton<AbstractMailWorker, MailKitWorker>();
|
builder.Services.AddSingleton<AbstractMailWorker, MailKitWorker>();
|
||||||
|
|
||||||
|
builder.Services.AddTransient<AbstractSaveToExcelAdministrator, SaveToExcelAdministrator>();
|
||||||
|
builder.Services.AddTransient<AbstractSaveToWordAdministrator, SaveToWordAdministrator>();
|
||||||
|
builder.Services.AddTransient<AbstractSaveToPdfAdministrator, SaveToPdfAdministrator>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
builder.Services.AddControllers();
|
builder.Services.AddControllers();
|
||||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||||
|
Loading…
Reference in New Issue
Block a user