Update automapper

This commit is contained in:
2016-09-24 00:06:34 -04:00
parent f473c64540
commit 6789c1b3b5
32 changed files with 254 additions and 206 deletions
@@ -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);