Update automapper
This commit is contained in:
@@ -7,14 +7,13 @@ using ClosedXML.Excel;
|
||||
using CsvHelper;
|
||||
using CsvHelper.Configuration;
|
||||
using CsvHelper.Excel;
|
||||
using Heroic.AutoMapper;
|
||||
using InventoryTraker.Web.Models;
|
||||
|
||||
namespace InventoryTraker.Web.Utilities
|
||||
{
|
||||
public class MovementReportWriter
|
||||
{
|
||||
public class MovementReportExportItem : IMapFrom<MovementReportItem>, IHaveCustomMappings
|
||||
public class MovementReportExportItem
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string UnitsPerCaseContainerType { get; set; }
|
||||
@@ -25,45 +24,48 @@ namespace InventoryTraker.Web.Utilities
|
||||
public string AdjustmentQuantity { get; set; }
|
||||
public string EndingQuantity { get; set; }
|
||||
|
||||
public void CreateMappings(IMapperConfiguration configuration)
|
||||
public class AutoMapperProfile : Profile
|
||||
{
|
||||
Func<int, int, string> formatCases =
|
||||
public AutoMapperProfile()
|
||||
{
|
||||
Func<int, int, string> formatCases =
|
||||
(cases, unitsPerCase) => $"{cases * unitsPerCase} ({cases} cs)";
|
||||
|
||||
Func<int, int, string> hideEmptyCases =
|
||||
(cases, unitsPerCase) =>
|
||||
cases > 0
|
||||
? formatCases(cases, unitsPerCase)
|
||||
: "";
|
||||
Func<int, int, string> hideEmptyCases =
|
||||
(cases, unitsPerCase) =>
|
||||
cases > 0
|
||||
? formatCases(cases, unitsPerCase)
|
||||
: "";
|
||||
|
||||
Func<int, int, string> negative =
|
||||
(cases, unitsPerCase) =>
|
||||
cases > 0
|
||||
? "- " + hideEmptyCases(cases, unitsPerCase)
|
||||
: "";
|
||||
Func<int, int, string> negative =
|
||||
(cases, unitsPerCase) =>
|
||||
cases > 0
|
||||
? "- " + hideEmptyCases(cases, unitsPerCase)
|
||||
: "";
|
||||
|
||||
configuration.CreateMap<MovementReportItem, MovementReportExportItem>()
|
||||
.ForMember(d => d.Name, opt => opt.MapFrom(i => i.InventoryType.Name))
|
||||
.ForMember(d => d.UnitsPerCaseContainerType,
|
||||
opt => opt.MapFrom(i => i.InventoryType.UnitsPerCaseContainerType))
|
||||
.ForMember(d => d.BeginningQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
formatCases(i.BeginningQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.AddedQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
hideEmptyCases(i.AddedQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.TotalAvailableQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
hideEmptyCases(i.TotalAvailableQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.AdjustmentQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
negative(i.AdjustmentQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.DistributedQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
hideEmptyCases(i.DistributedQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.EndingQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
formatCases(i.EndingQuantity, i.InventoryType.UnitsPerCase)));
|
||||
CreateMap<MovementReportItem, MovementReportExportItem>()
|
||||
.ForMember(d => d.Name, opt => opt.MapFrom(i => i.InventoryType.Name))
|
||||
.ForMember(d => d.UnitsPerCaseContainerType,
|
||||
opt => opt.MapFrom(i => i.InventoryType.UnitsPerCaseContainerType))
|
||||
.ForMember(d => d.BeginningQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
formatCases(i.BeginningQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.AddedQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
hideEmptyCases(i.AddedQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.TotalAvailableQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
hideEmptyCases(i.TotalAvailableQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.AdjustmentQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
negative(i.AdjustmentQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.DistributedQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
hideEmptyCases(i.DistributedQuantity, i.InventoryType.UnitsPerCase)))
|
||||
.ForMember(d => d.EndingQuantity,
|
||||
opt => opt.MapFrom(i =>
|
||||
formatCases(i.EndingQuantity, i.InventoryType.UnitsPerCase)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,6 +84,13 @@ namespace InventoryTraker.Web.Utilities
|
||||
}
|
||||
}
|
||||
|
||||
private readonly IMapper _mapper;
|
||||
|
||||
public MovementReportWriter(IMapper mapper)
|
||||
{
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
public byte[] Write(MovementReport report)
|
||||
{
|
||||
using (var stream = new MemoryStream())
|
||||
@@ -104,7 +113,7 @@ namespace InventoryTraker.Web.Utilities
|
||||
writer.WriteField<string>($"Month: {report.Month:MMMM yyyy}");
|
||||
writer.NextRecord();
|
||||
var items =
|
||||
Mapper.Map<IEnumerable<MovementReportItem>, IEnumerable<MovementReportExportItem>>
|
||||
_mapper.Map<IEnumerable<MovementReportItem>, IEnumerable<MovementReportExportItem>>
|
||||
(report.Items)
|
||||
.OrderBy(i => i.Name);
|
||||
writer.WriteRecords(items);
|
||||
|
||||
Reference in New Issue
Block a user