DD.WellWorkover.Cloud/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs

100 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AsbCloudApp.Data.DailyReportModel;
using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks;
using ClosedXML.Excel;
using System.Linq;
namespace AsbCloudInfrastructure.Services.DailyReport
{
internal class BlockHeader : BlockAbstract
{
private readonly DailyReportHeadDto blockDto;
public CellAddress AddressTitle { get; }
public CellAddress AddressCustomer { get; }
public CellAddress AddressDriller { get; }
public CellAddress AddressPeriod { get; }
public CellAddress AddressExampleData1 { get; }
public CellAddress[] AddressesExampleDataArray { get; }
/// <summary>
/// Значение нижняя правая ячейка блока
/// </summary>
public override CellAddress AddressBlockBegin { get; }
/// <summary>
/// Значение нижняя правая ячейка блока
/// </summary>
public override CellAddress AddressBlockEnd { get; }
public BlockHeader(CellAddress addressBlockBegin, DailyReportHeadDto blockDto)
{
AddressBlockBegin = addressBlockBegin.Copy();
this.blockDto = blockDto;
AddressTitle = addressBlockBegin + (0, 0);
AddressCustomer = addressBlockBegin + (1,0);
AddressDriller = addressBlockBegin + (2, 0);
AddressPeriod = addressBlockBegin + (3, 0);
AddressExampleData1 = addressBlockBegin + (5, 0);
AddressesExampleDataArray = new CellAddress[5];
for (int i = 0; i < 5; i++)
AddressesExampleDataArray[i] = addressBlockBegin + (6 + i, 0);
AddressBlockEnd = AddressesExampleDataArray.Last();
}
public override void Draw(IXLWorksheet sheet)
{
// значение в одну ячейку
sheet.Cell(AddressTitle)
._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}")
.Style.SetH1();
// значение в несколько ячеек с объединением
sheet._Range(AddressCustomer, AddressCustomer + (0,7))
._SetValue($"Заказчик: {blockDto.Customer}");
sheet.Cell(AddressDriller)
._SetValue($"Подрядчик: {blockDto.Contractor}");
sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4))
._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой
}
}
internal class BlockWithFormula : BlockAbstract
{
private readonly HeadBlock blockHeader;
public override CellAddress AddressBlockBegin { get; }
public override CellAddress AddressBlockEnd { get; }
public CellAddress AddressFomulaExample { get; set; }
public BlockWithFormula(CellAddress addressBlockBegin, HeadBlock blockHeader)
{
AddressFomulaExample = addressBlockBegin + (0, 0);
AddressBlockBegin = addressBlockBegin.Copy();
AddressBlockEnd = addressBlockBegin + (1, 0);
this.blockHeader = blockHeader;
}
public override void Draw(IXLWorksheet sheet)
{
// var formula = string.Format("{0}/5", blockHeader.AddressExampleData1.ToString());
// sheet.Cell(AddressFomulaExample)
// .SetFormulaA1(formula);
}
}
abstract class BlockAbstract
{
public abstract CellAddress AddressBlockBegin { get; }
public abstract CellAddress AddressBlockEnd { get; }
public abstract void Draw(IXLWorksheet sheet);
}
}