From 6789c1b3b5267247bdb46bbe898ea7abc77369ac Mon Sep 17 00:00:00 2001 From: James Kolpack Date: Sat, 24 Sep 2016 00:06:34 -0400 Subject: [PATCH] Update automapper --- .../App_Start/AutoMapperConfig.cs | 20 ----- InventoryTraker.Web.Tests/App_Start/Setup.cs | 6 +- .../InventoryTraker.Web.Tests.csproj | 9 +- .../Models/InventoryAddForm.cs | 6 +- .../DistributionReportWriterTests.cs | 13 ++- .../Utilities/InventoryReportWriterTests.cs | 2 - .../Utilities/MovementReportWriterTests.cs | 13 ++- InventoryTraker.Web.Tests/app.config | 4 + InventoryTraker.Web.Tests/packages.config | 5 +- .../App_Start/AutoMapperConfig.cs | 15 ++-- .../App_Start/StructureMapConfig.cs | 4 +- .../Controllers/ControllerBase.cs | 2 + .../Controllers/InventoryController.cs | 19 +++-- .../Controllers/InventoryTypeController.cs | 17 ++-- .../Controllers/ProfileController.cs | 6 +- .../Controllers/ReportController.cs | 15 ++-- .../Controllers/TransactionController.cs | 12 +-- .../Controllers/UserController.cs | 22 ++--- .../InventoryTraker.Web.csproj | 8 +- .../Models/InventoryAddForm.cs | 12 ++- .../Models/InventoryTypeViewModel.cs | 13 ++- .../Models/InventoryViewModel.cs | 24 +++--- InventoryTraker.Web/Models/ProfileForm.cs | 14 ++-- .../Models/TransactionViewModel.cs | 46 +++++----- InventoryTraker.Web/Models/UserViewModel.cs | 12 ++- InventoryTraker.Web/Services/ReportService.cs | 8 +- .../Utilities/DistributionReportWriter.cs | 23 +++-- .../Utilities/MovementReportWriter.cs | 83 ++++++++++--------- .../Views/Profile/Index.cshtml | 16 +--- InventoryTraker.Web/Web.config | 4 + .../js/profile/EditProfileController.js | 4 +- InventoryTraker.Web/packages.config | 3 +- 32 files changed, 254 insertions(+), 206 deletions(-) delete mode 100644 InventoryTraker.Web.Tests/App_Start/AutoMapperConfig.cs diff --git a/InventoryTraker.Web.Tests/App_Start/AutoMapperConfig.cs b/InventoryTraker.Web.Tests/App_Start/AutoMapperConfig.cs deleted file mode 100644 index f69b5e9..0000000 --- a/InventoryTraker.Web.Tests/App_Start/AutoMapperConfig.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Heroic.AutoMapper; -using InventoryTraker.Web.Tests.Utilities; - -[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(InventoryTraker.Web.Tests.AutoMapperConfig), "Configure")] -namespace InventoryTraker.Web.Tests -{ - public static class AutoMapperConfig - { - public static void Configure() - { - //NOTE: By default, the current project and all referenced projects will be scanned. - // You can customize this by passing in a lambda to filter the assemblies by name, - // like so: - //HeroicAutoMapperConfigurator.LoadMapsFromCallerAndReferencedAssemblies(x => x.Name.StartsWith("YourPrefix")); - //HeroicAutoMapperConfigurator.LoadMapsFromCallerAndReferencedAssemblies(); - //If you run into issues with the maps not being located at runtime, try using this method instead: - HeroicAutoMapperConfigurator.LoadMapsFromAssemblyContainingTypeAndReferencedAssemblies(); - } - } -} \ No newline at end of file diff --git a/InventoryTraker.Web.Tests/App_Start/Setup.cs b/InventoryTraker.Web.Tests/App_Start/Setup.cs index 7c28d75..dc621fe 100644 --- a/InventoryTraker.Web.Tests/App_Start/Setup.cs +++ b/InventoryTraker.Web.Tests/App_Start/Setup.cs @@ -1,6 +1,4 @@ -using Heroic.AutoMapper; -using InventoryTraker.Web.Core; -using NUnit.Framework; +using NUnit.Framework; namespace InventoryTraker.Web.Tests { @@ -10,7 +8,7 @@ namespace InventoryTraker.Web.Tests [OneTimeSetUp] public void S() { - HeroicAutoMapperConfigurator.LoadMapsFromAssemblyContainingTypeAndReferencedAssemblies(); + AutoMapperConfig.Configure(); } } } diff --git a/InventoryTraker.Web.Tests/InventoryTraker.Web.Tests.csproj b/InventoryTraker.Web.Tests/InventoryTraker.Web.Tests.csproj index 5daf950..7fb1dd8 100644 --- a/InventoryTraker.Web.Tests/InventoryTraker.Web.Tests.csproj +++ b/InventoryTraker.Web.Tests/InventoryTraker.Web.Tests.csproj @@ -30,8 +30,8 @@ 4 - - ..\packages\AutoMapper.4.2.0\lib\net45\AutoMapper.dll + + ..\packages\AutoMapper.5.1.1\lib\net45\AutoMapper.dll True @@ -42,8 +42,8 @@ ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll True - - ..\packages\NUnit.3.4.1\lib\net45\nunit.framework.dll + + ..\packages\NUnit.3.4.0\lib\net45\nunit.framework.dll True @@ -60,7 +60,6 @@ - diff --git a/InventoryTraker.Web.Tests/Models/InventoryAddForm.cs b/InventoryTraker.Web.Tests/Models/InventoryAddForm.cs index 14da51a..e4a66a0 100644 --- a/InventoryTraker.Web.Tests/Models/InventoryAddForm.cs +++ b/InventoryTraker.Web.Tests/Models/InventoryAddForm.cs @@ -10,10 +10,12 @@ namespace InventoryTraker.Web.Tests.Models [TestFixture] public class InventoryAddFormTests { + private IMapper _mapper; + [OneTimeSetUp] public void StartUp() { - HeroicAutoMapperConfigurator.LoadMapsFromAssemblyContainingTypeAndReferencedAssemblies(); + _mapper = AutoMapperConfig.Config.CreateMapper(); } [Test] @@ -28,7 +30,7 @@ namespace InventoryTraker.Web.Tests.Models Quantity = 32 }; - var inventory = Mapper.Map(form); + var inventory = _mapper.Map(form); Assert.That(inventory.AddedDate, Is.EqualTo(form.AddedDate)); Assert.That(inventory.ExpirationDate, Is.EqualTo(form.ExpirationDate)); diff --git a/InventoryTraker.Web.Tests/Utilities/DistributionReportWriterTests.cs b/InventoryTraker.Web.Tests/Utilities/DistributionReportWriterTests.cs index d3e77e2..74dcd44 100644 --- a/InventoryTraker.Web.Tests/Utilities/DistributionReportWriterTests.cs +++ b/InventoryTraker.Web.Tests/Utilities/DistributionReportWriterTests.cs @@ -1,7 +1,6 @@ using System; using System.IO; -using Heroic.AutoMapper; -using InventoryTraker.Web.Core; +using AutoMapper; using InventoryTraker.Web.Models; using InventoryTraker.Web.Utilities; using NUnit.Framework; @@ -11,6 +10,14 @@ namespace InventoryTraker.Web.Tests.Utilities [TestFixture] public class DistributionReportWriterTests { + private IMapper _mapper; + + [OneTimeSetUp] + public void StartUp() + { + _mapper = AutoMapperConfig.Config.CreateMapper(); + } + private readonly DistributionReport[] _distributionReports = { new DistributionReport @@ -54,7 +61,7 @@ namespace InventoryTraker.Web.Tests.Utilities (var outputFile = new StreamWriter(Path.Combine(@"c:\temp", "DistributionReport.xlsx"))) { - var writer = new DistributionReportWriter(); + var writer = new DistributionReportWriter(_mapper); writer.WriteStream(_distributionReports, outputFile.BaseStream); } } diff --git a/InventoryTraker.Web.Tests/Utilities/InventoryReportWriterTests.cs b/InventoryTraker.Web.Tests/Utilities/InventoryReportWriterTests.cs index f6b307d..61a18e1 100644 --- a/InventoryTraker.Web.Tests/Utilities/InventoryReportWriterTests.cs +++ b/InventoryTraker.Web.Tests/Utilities/InventoryReportWriterTests.cs @@ -1,7 +1,5 @@ using System; using System.IO; -using Heroic.AutoMapper; -using InventoryTraker.Web.Core; using InventoryTraker.Web.Models; using InventoryTraker.Web.Utilities; using NUnit.Framework; diff --git a/InventoryTraker.Web.Tests/Utilities/MovementReportWriterTests.cs b/InventoryTraker.Web.Tests/Utilities/MovementReportWriterTests.cs index 1621ec5..2384622 100644 --- a/InventoryTraker.Web.Tests/Utilities/MovementReportWriterTests.cs +++ b/InventoryTraker.Web.Tests/Utilities/MovementReportWriterTests.cs @@ -1,7 +1,6 @@ using System; using System.IO; -using Heroic.AutoMapper; -using InventoryTraker.Web.Core; +using AutoMapper; using InventoryTraker.Web.Models; using InventoryTraker.Web.Utilities; using NUnit.Framework; @@ -11,6 +10,14 @@ namespace InventoryTraker.Web.Tests.Utilities [TestFixture] public class MovementReportWriterTests { + private IMapper _mapper; + + [OneTimeSetUp] + public void StartUp() + { + _mapper = AutoMapperConfig.Config.CreateMapper(); + } + private readonly MovementReport _movementReport = new MovementReport { @@ -61,7 +68,7 @@ namespace InventoryTraker.Web.Tests.Utilities (var outputFile = new StreamWriter(Path.Combine(@"c:\temp", "MovementReport.xlsx"))) { - var writer = new MovementReportWriter(); + var writer = new MovementReportWriter(_mapper); writer.WriteStream(_movementReport, outputFile.BaseStream); } } diff --git a/InventoryTraker.Web.Tests/app.config b/InventoryTraker.Web.Tests/app.config index 8a403d9..92364d8 100644 --- a/InventoryTraker.Web.Tests/app.config +++ b/InventoryTraker.Web.Tests/app.config @@ -38,6 +38,10 @@ + + + + \ No newline at end of file diff --git a/InventoryTraker.Web.Tests/packages.config b/InventoryTraker.Web.Tests/packages.config index fadfbb0..dbe522e 100644 --- a/InventoryTraker.Web.Tests/packages.config +++ b/InventoryTraker.Web.Tests/packages.config @@ -1,8 +1,7 @@  - - + - + \ No newline at end of file diff --git a/InventoryTraker.Web/App_Start/AutoMapperConfig.cs b/InventoryTraker.Web/App_Start/AutoMapperConfig.cs index b8f8f0d..a103645 100644 --- a/InventoryTraker.Web/App_Start/AutoMapperConfig.cs +++ b/InventoryTraker.Web/App_Start/AutoMapperConfig.cs @@ -1,21 +1,18 @@ -using Heroic.AutoMapper; +using AutoMapper; using InventoryTraker.Web; -using InventoryTraker.Web.Controllers; [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(AutoMapperConfig), "Configure")] namespace InventoryTraker.Web { public static class AutoMapperConfig { + public static MapperConfiguration Config { get; private set; } + public static void Configure() { - //NOTE: By default, the current project and all referenced projects will be scanned. - // You can customize this by passing in a lambda to filter the assemblies by name, - // like so: - //HeroicAutoMapperConfigurator.LoadMapsFromCallerAndReferencedAssemblies(x => x.Name.StartsWith("YourPrefix")); - //HeroicAutoMapperConfigurator.LoadMapsFromCallerAndReferencedAssemblies(); - //If you run into issues with the maps not being located at runtime, try using this method instead: - HeroicAutoMapperConfigurator.LoadMapsFromAssemblyContainingTypeAndReferencedAssemblies(); + Config = new MapperConfiguration(cfg => + cfg.AddProfiles(typeof(Controllers.UserController)) + ); } } } \ No newline at end of file diff --git a/InventoryTraker.Web/App_Start/StructureMapConfig.cs b/InventoryTraker.Web/App_Start/StructureMapConfig.cs index de7c603..7b4bf38 100644 --- a/InventoryTraker.Web/App_Start/StructureMapConfig.cs +++ b/InventoryTraker.Web/App_Start/StructureMapConfig.cs @@ -3,12 +3,12 @@ using System.Web; using Heroic.Web.IoC; using System.Web.Http; using System.Web.Mvc; +using AutoMapper; using InventoryTraker.Web.Core; using InventoryTraker.Web.Data; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Owin.Security; -using StructureMap.Graph; [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(InventoryTraker.Web.StructureMapConfig), "Configure")] namespace InventoryTraker.Web @@ -42,6 +42,8 @@ namespace InventoryTraker.Web cfg.For().Use(ctx => ctx.GetInstance().GetOwinContext().Authentication); //TODO: Add other registries and configure your container (if needed) + var mapper = AutoMapperConfig.Config.CreateMapper(); + cfg.For().Use(x => mapper); }); var resolver = new StructureMapDependencyResolver(); diff --git a/InventoryTraker.Web/Controllers/ControllerBase.cs b/InventoryTraker.Web/Controllers/ControllerBase.cs index 9e551fb..9a6edbd 100644 --- a/InventoryTraker.Web/Controllers/ControllerBase.cs +++ b/InventoryTraker.Web/Controllers/ControllerBase.cs @@ -1,6 +1,8 @@ using System.Linq; using System.Web.Mvc; +using AutoMapper; using InventoryTraker.Web.ActionResults; +using InventoryTraker.Web.Data; using InventoryTraker.Web.Utilities; using NLog; diff --git a/InventoryTraker.Web/Controllers/InventoryController.cs b/InventoryTraker.Web/Controllers/InventoryController.cs index b1fcfe8..a1cd2fe 100644 --- a/InventoryTraker.Web/Controllers/InventoryController.cs +++ b/InventoryTraker.Web/Controllers/InventoryController.cs @@ -15,10 +15,12 @@ namespace InventoryTraker.Web.Controllers public class InventoryController : ControllerBase { private readonly AppDbContext _context; + private readonly IMapper _mapper; - public InventoryController(AppDbContext context) + public InventoryController(AppDbContext context, IMapper mapper) { _context = context; + _mapper = mapper; } public ActionResult Index() @@ -30,7 +32,7 @@ namespace InventoryTraker.Web.Controllers { var viewModels = CurrentInventory() - .ProjectTo() + .ProjectTo(_mapper.ConfigurationProvider) .ToArray(); return BetterJson(viewModels); @@ -39,7 +41,7 @@ namespace InventoryTraker.Web.Controllers public JsonResult Find(int id) { var inventory = _context.Inventories.Find(id); - var viewModel = Mapper.Map(inventory); + var viewModel = _mapper.Map(inventory); return BetterJson(viewModel); } @@ -57,7 +59,7 @@ namespace InventoryTraker.Web.Controllers var viewModels = CurrentInventory() - .ProjectTo() + .ProjectTo(_mapper.ConfigurationProvider) .ToArray(); var excel = writer.Write(viewModels); @@ -77,7 +79,7 @@ namespace InventoryTraker.Web.Controllers if (!ModelState.IsValid) return GetModelStateErrorListJson(); - var inventory = Mapper.Map(form); + var inventory = _mapper.Map(form); inventory.InventoryType = _context.InventoryTypes.Find(form.InventoryTypeId); if (inventory.InventoryType == null) @@ -98,7 +100,7 @@ namespace InventoryTraker.Web.Controllers }; _context.SaveChanges(); - var model = Mapper.Map(inventory); + var model = _mapper.Map(inventory); return BetterJson(model); } @@ -156,7 +158,7 @@ namespace InventoryTraker.Web.Controllers _context.SaveChanges(); return BetterJson(CurrentInventory() - .ProjectTo() + .ProjectTo(_mapper.ConfigurationProvider) .ToArray()); } @@ -207,7 +209,8 @@ namespace InventoryTraker.Web.Controllers _context.SaveChanges(); - return BetterJson(Mapper.Map(inventory)); + return BetterJson(_mapper.Map(inventory)); } + } } \ No newline at end of file diff --git a/InventoryTraker.Web/Controllers/InventoryTypeController.cs b/InventoryTraker.Web/Controllers/InventoryTypeController.cs index 4c52982..89a71dc 100644 --- a/InventoryTraker.Web/Controllers/InventoryTypeController.cs +++ b/InventoryTraker.Web/Controllers/InventoryTypeController.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using AutoMapper; @@ -14,10 +13,12 @@ namespace InventoryTraker.Web.Controllers public class InventoryTypeController : ControllerBase { private readonly AppDbContext _context; + private readonly IMapper _mapper; - public InventoryTypeController(AppDbContext context) + public InventoryTypeController(AppDbContext context, IMapper mapper) { _context = context; + _mapper = mapper; } public ActionResult Index() @@ -29,7 +30,7 @@ namespace InventoryTraker.Web.Controllers { var viewModels = _context.InventoryTypes .OrderByDescending(x => x.Name) - .ProjectTo(); + .ProjectTo(_mapper.ConfigurationProvider); return BetterJson(viewModels.ToArray()); } @@ -41,7 +42,7 @@ namespace InventoryTraker.Web.Controllers var viewModels = _context.InventoryTypes .OrderByDescending(x => x.Name) - .ProjectTo() + .ProjectTo(_mapper.ConfigurationProvider) .ToArray(); var excel = writer.Write(viewModels); @@ -60,11 +61,11 @@ namespace InventoryTraker.Web.Controllers if (!ModelState.IsValid) return GetModelStateErrorListJson(); - var inventoryType = Mapper.Map(form); + var inventoryType = _mapper.Map(form); _context.InventoryTypes.Add(inventoryType); _context.SaveChanges(); - var model = Mapper.Map(inventoryType); + var model = _mapper.Map(inventoryType); return BetterJson(model); } @@ -74,11 +75,11 @@ namespace InventoryTraker.Web.Controllers return GetModelStateErrorListJson(); var inventoryType = _context.InventoryTypes.Find(form.Id); - Mapper.Map(form, inventoryType); + _mapper.Map(form, inventoryType); _context.SaveChanges(); - var model = Mapper.Map(inventoryType); + var model = _mapper.Map(inventoryType); return BetterJson(model); } } diff --git a/InventoryTraker.Web/Controllers/ProfileController.cs b/InventoryTraker.Web/Controllers/ProfileController.cs index 1257acd..c81fead 100644 --- a/InventoryTraker.Web/Controllers/ProfileController.cs +++ b/InventoryTraker.Web/Controllers/ProfileController.cs @@ -10,16 +10,18 @@ namespace InventoryTraker.Web.Controllers public class ProfileController : ControllerBase { private readonly ApplicationUserManager _userManager; + private readonly IMapper _mapper; - public ProfileController(ApplicationUserManager userManager) + public ProfileController(ApplicationUserManager userManager, IMapper mapper) { _userManager = userManager; + _mapper = mapper; } public ActionResult Index() { var user = _userManager.FindById(User.Identity.GetUserId()); - var model = Mapper.Map(user); + var model = _mapper.Map(user); return View(model); } diff --git a/InventoryTraker.Web/Controllers/ReportController.cs b/InventoryTraker.Web/Controllers/ReportController.cs index 9dddd8a..7cd5d88 100644 --- a/InventoryTraker.Web/Controllers/ReportController.cs +++ b/InventoryTraker.Web/Controllers/ReportController.cs @@ -9,10 +9,17 @@ namespace InventoryTraker.Web.Controllers public class ReportController : ControllerBase { private readonly ReportService _reportService; + private readonly DistributionReportWriter _distributionReportWriter; + private readonly MovementReportWriter _movementReportWriter; - public ReportController(ReportService reportService) + public ReportController( + ReportService reportService, + DistributionReportWriter distributionReportWriter, + MovementReportWriter movementReportWriter) { _reportService = reportService; + _distributionReportWriter = distributionReportWriter; + _movementReportWriter = movementReportWriter; } [HttpGet] @@ -32,8 +39,7 @@ namespace InventoryTraker.Web.Controllers { var report = _reportService.GetDistributionReport(startDate, endDate); - var writer = new DistributionReportWriter(); - var excel = writer.Write(report); + var excel = _distributionReportWriter.Write(report); var filename = $"InventoryDistributionReport{startDate:yyyyMMdd}-{endDate:yyyyMMdd}.xlsx"; @@ -61,8 +67,7 @@ namespace InventoryTraker.Web.Controllers { var report = _reportService.GetMovementReport(month); - var writer = new MovementReportWriter(); - var excel = writer.Write(report); + var excel = _movementReportWriter.Write(report); var filename = $"MonthlyInventoryReport{report.Month:MMMMyyyy}.xlsx"; diff --git a/InventoryTraker.Web/Controllers/TransactionController.cs b/InventoryTraker.Web/Controllers/TransactionController.cs index ade20f9..0c1e124 100644 --- a/InventoryTraker.Web/Controllers/TransactionController.cs +++ b/InventoryTraker.Web/Controllers/TransactionController.cs @@ -1,6 +1,6 @@ -using System.Collections; -using System.Linq; +using System.Linq; using System.Web.Mvc; +using AutoMapper; using AutoMapper.QueryableExtensions; using InventoryTraker.Web.Attributes; using InventoryTraker.Web.Core; @@ -12,10 +12,12 @@ namespace InventoryTraker.Web.Controllers public class TransactionController : ControllerBase { private readonly AppDbContext _context; + private readonly IMapper _mapper; - public TransactionController(AppDbContext context) + public TransactionController(AppDbContext context, IMapper mapper) { _context = context; + _mapper = mapper; } public ActionResult Index() @@ -27,7 +29,7 @@ namespace InventoryTraker.Web.Controllers { var viewModels = _context.Transactions - .ProjectTo() + .ProjectTo(_mapper.ConfigurationProvider) .ToArray(); return BetterJson(viewModels); @@ -50,7 +52,7 @@ namespace InventoryTraker.Web.Controllers var totalItems = _context.Transactions.Count(); var transactions = query - .ProjectTo() + .ProjectTo(_mapper.ConfigurationProvider) .ToArray(); return BetterJson(new { totalItems, transactions }); } diff --git a/InventoryTraker.Web/Controllers/UserController.cs b/InventoryTraker.Web/Controllers/UserController.cs index d3018bc..9ebebac 100644 --- a/InventoryTraker.Web/Controllers/UserController.cs +++ b/InventoryTraker.Web/Controllers/UserController.cs @@ -14,23 +14,25 @@ namespace InventoryTraker.Web.Controllers public class UserController : ControllerBase { private readonly ApplicationUserManager _userManager; + private readonly IMapper _mapper; - public UserController(ApplicationUserManager userManager) - { - _userManager = userManager; - } + public UserController(ApplicationUserManager userManager, IMapper mapper) + { + _userManager = userManager; + _mapper = mapper; + } - public ActionResult Index() + public ActionResult Index() { return View(); } public JsonResult All() { - var users = + var users = _userManager .Users - .ProjectTo() + .ProjectTo(_mapper.ConfigurationProvider) .OrderBy(u => u.UserName); return BetterJson(users); @@ -47,7 +49,7 @@ namespace InventoryTraker.Web.Controllers new User { Email = form.Email, - UserName = form.UserName + UserName = form.UserName, }; var identityResult = await _userManager.CreateAsync(user, form.Password); @@ -55,7 +57,7 @@ namespace InventoryTraker.Web.Controllers if (!identityResult.Succeeded) return GetErrorListJson(identityResult.Errors.ToArray()); - return BetterJson(Mapper.Map(user)); + return BetterJson(_mapper.Map(user)); } [ActionLog] @@ -83,7 +85,7 @@ namespace InventoryTraker.Web.Controllers if (!identityResult.Succeeded) return GetErrorListJson(identityResult.Errors.ToArray()); - return BetterJson(Mapper.Map(user)); + return BetterJson(_mapper.Map(user)); } } } \ No newline at end of file diff --git a/InventoryTraker.Web/InventoryTraker.Web.csproj b/InventoryTraker.Web/InventoryTraker.Web.csproj index 605ee7f..22547d7 100644 --- a/InventoryTraker.Web/InventoryTraker.Web.csproj +++ b/InventoryTraker.Web/InventoryTraker.Web.csproj @@ -43,8 +43,8 @@ ..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll True - - ..\packages\AutoMapper.4.2.0\lib\net45\AutoMapper.dll + + ..\packages\AutoMapper.5.1.1\lib\net45\AutoMapper.dll True @@ -71,10 +71,6 @@ ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll True - - ..\packages\Heroic.AutoMapper.2.0.0\lib\net45\Heroic.AutoMapper.dll - True - ..\packages\Heroic.Web.IoC.4.1.2\lib\net45\Heroic.Web.IoC.dll True diff --git a/InventoryTraker.Web/Models/InventoryAddForm.cs b/InventoryTraker.Web/Models/InventoryAddForm.cs index 8205d5d..04f7bd3 100644 --- a/InventoryTraker.Web/Models/InventoryAddForm.cs +++ b/InventoryTraker.Web/Models/InventoryAddForm.cs @@ -1,12 +1,12 @@ using System; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; -using Heroic.AutoMapper; +using AutoMapper; using InventoryTraker.Web.Core; namespace InventoryTraker.Web.Models { - public class InventoryAddForm : IMapTo + public class InventoryAddForm { [HiddenInput(DisplayValue = false)] [Required] @@ -22,5 +22,13 @@ namespace InventoryTraker.Web.Models public DateTime AddedDate { get; set; } public string Memo { get; set; } + + public class AutoMapperProfile : Profile + { + public AutoMapperProfile() + { + CreateMap(); + } + } } } \ No newline at end of file diff --git a/InventoryTraker.Web/Models/InventoryTypeViewModel.cs b/InventoryTraker.Web/Models/InventoryTypeViewModel.cs index e4d04d6..6d61376 100644 --- a/InventoryTraker.Web/Models/InventoryTypeViewModel.cs +++ b/InventoryTraker.Web/Models/InventoryTypeViewModel.cs @@ -1,11 +1,11 @@ using System.ComponentModel.DataAnnotations; using System.Web.Mvc; -using Heroic.AutoMapper; +using AutoMapper; using InventoryTraker.Web.Core; namespace InventoryTraker.Web.Models { - public class InventoryTypeViewModel : IMapFrom, IMapTo + public class InventoryTypeViewModel { [HiddenInput] public int Id { get; set; } @@ -33,5 +33,14 @@ namespace InventoryTraker.Web.Models [Required] public decimal PricePerCase { get; set; } + + public class AutoMapperProfile : Profile + { + public AutoMapperProfile() + { + CreateMap(); + CreateMap(); + } + } } } \ No newline at end of file diff --git a/InventoryTraker.Web/Models/InventoryViewModel.cs b/InventoryTraker.Web/Models/InventoryViewModel.cs index 476908c..71cac11 100644 --- a/InventoryTraker.Web/Models/InventoryViewModel.cs +++ b/InventoryTraker.Web/Models/InventoryViewModel.cs @@ -1,11 +1,10 @@ using System; using AutoMapper; -using Heroic.AutoMapper; using InventoryTraker.Web.Core; namespace InventoryTraker.Web.Models { - public class InventoryViewModel : IMapFrom, IHaveCustomMappings + public class InventoryViewModel { public int Id { get; set; } @@ -31,16 +30,19 @@ namespace InventoryTraker.Web.Models public bool IsExpired => ExpirationDate < DateTime.Today; - public void CreateMappings(IMapperConfiguration configuration) + public class AutoMapperProfile : Profile { - configuration.CreateMap() - .ForMember(d => d.InventoryTypeId, opt => opt.MapFrom(s => s.InventoryType.Id)) - .ForMember(d => d.Name, opt => opt.MapFrom(s => s.InventoryType.Name)) - .ForMember(d => d.UnitsPerCase, opt => opt.MapFrom(s => s.InventoryType.UnitsPerCase)) - .ForMember(d => d.ContainerType, opt => opt.MapFrom(s => s.InventoryType.ContainerType)) - .ForMember(d => d.WeightPerCase, opt => opt.MapFrom(s => s.InventoryType.WeightPerCase)) - .ForMember(d => d.PricePerCase, opt => opt.MapFrom(s => s.InventoryType.PricePerCase)) - .ForMember(d => d.AddedDate, opt => opt.MapFrom(s => s.AddedDate)); + public AutoMapperProfile() + { + CreateMap() + .ForMember(d => d.InventoryTypeId, opt => opt.MapFrom(s => s.InventoryType.Id)) + .ForMember(d => d.Name, opt => opt.MapFrom(s => s.InventoryType.Name)) + .ForMember(d => d.UnitsPerCase, opt => opt.MapFrom(s => s.InventoryType.UnitsPerCase)) + .ForMember(d => d.ContainerType, opt => opt.MapFrom(s => s.InventoryType.ContainerType)) + .ForMember(d => d.WeightPerCase, opt => opt.MapFrom(s => s.InventoryType.WeightPerCase)) + .ForMember(d => d.PricePerCase, opt => opt.MapFrom(s => s.InventoryType.PricePerCase)) + .ForMember(d => d.AddedDate, opt => opt.MapFrom(s => s.AddedDate)); + } } } } \ No newline at end of file diff --git a/InventoryTraker.Web/Models/ProfileForm.cs b/InventoryTraker.Web/Models/ProfileForm.cs index 7357fcc..a6cff6b 100644 --- a/InventoryTraker.Web/Models/ProfileForm.cs +++ b/InventoryTraker.Web/Models/ProfileForm.cs @@ -1,11 +1,10 @@ using System.ComponentModel.DataAnnotations; using AutoMapper; -using Heroic.AutoMapper; using InventoryTraker.Web.Core; namespace InventoryTraker.Web.Models { - public class ProfileForm : IMapFrom, IHaveCustomMappings + public class ProfileForm { [Required, Display(Name = "Full Name", Prompt = "Full Name (ex: John Doe)...")] public string FullName { get; set; } @@ -13,11 +12,14 @@ namespace InventoryTraker.Web.Models [Required, DataType(DataType.EmailAddress), Display(Prompt = "your@email.com...")] public string EmailAddress { get; set; } - public void CreateMappings(IMapperConfiguration configuration) + public class AutoMapperProfile : Profile { - configuration.CreateMap() - .ForMember(d => d.FullName, opt => opt.MapFrom(s => s.UserName)) - .ForMember(d => d.EmailAddress, opt => opt.MapFrom(s => s.Email)); + public AutoMapperProfile() + { + CreateMap() + .ForMember(d => d.FullName, opt => opt.MapFrom(s => s.UserName)) + .ForMember(d => d.EmailAddress, opt => opt.MapFrom(s => s.Email)); + } } } } \ No newline at end of file diff --git a/InventoryTraker.Web/Models/TransactionViewModel.cs b/InventoryTraker.Web/Models/TransactionViewModel.cs index eaf4015..8475b85 100644 --- a/InventoryTraker.Web/Models/TransactionViewModel.cs +++ b/InventoryTraker.Web/Models/TransactionViewModel.cs @@ -1,12 +1,11 @@ using System; using System.ComponentModel.DataAnnotations; using AutoMapper; -using Heroic.AutoMapper; using InventoryTraker.Web.Core; namespace InventoryTraker.Web.Models { - public class TransactionViewModel : IMapFrom, IHaveCustomMappings + public class TransactionViewModel { [Required] public int Id { get; set; } @@ -37,27 +36,30 @@ namespace InventoryTraker.Web.Models public DateTime Timestamp { get; set; } - public void CreateMappings(IMapperConfiguration configuration) + public class AutoMapperProfile : Profile { - configuration.CreateMap() - .ForMember(d => d.InventoryId, - opt => opt.MapFrom(s => s.Inventory.Id)) - .ForMember(d => d.Name, - opt => opt.MapFrom(s => s.Inventory.InventoryType.Name)) - .ForMember(d => d.ExpirationDate, - opt => opt.MapFrom(s => s.Inventory.ExpirationDate)) - .ForMember(d => d.AddedDate, - opt => opt.MapFrom(s => s.Inventory.AddedDate)) - .ForMember(d => d.UnitsPerCase, - opt => opt.MapFrom(s => s.Inventory.InventoryType.UnitsPerCase)) - .ForMember(d => d.ContainerType, - opt => opt.MapFrom(s => s.Inventory.InventoryType.ContainerType)) - .ForMember(d => d.WeightPerCase, - opt => opt.MapFrom(s => s.Inventory.InventoryType.WeightPerCase)) - .ForMember(d => d.TransactionType, - opt => opt.MapFrom(s => s.TransactionType.ToString())) - .ForMember(d => d.PreviousQuantity, - opt => opt.MapFrom(s => s.CurrentQuantity - s.AddedQuantity + s.RemovedQuantity)); + public AutoMapperProfile() + { + CreateMap() + .ForMember(d => d.InventoryId, + opt => opt.MapFrom(s => s.Inventory.Id)) + .ForMember(d => d.Name, + opt => opt.MapFrom(s => s.Inventory.InventoryType.Name)) + .ForMember(d => d.ExpirationDate, + opt => opt.MapFrom(s => s.Inventory.ExpirationDate)) + .ForMember(d => d.AddedDate, + opt => opt.MapFrom(s => s.Inventory.AddedDate)) + .ForMember(d => d.UnitsPerCase, + opt => opt.MapFrom(s => s.Inventory.InventoryType.UnitsPerCase)) + .ForMember(d => d.ContainerType, + opt => opt.MapFrom(s => s.Inventory.InventoryType.ContainerType)) + .ForMember(d => d.WeightPerCase, + opt => opt.MapFrom(s => s.Inventory.InventoryType.WeightPerCase)) + .ForMember(d => d.TransactionType, + opt => opt.MapFrom(s => s.TransactionType.ToString())) + .ForMember(d => d.PreviousQuantity, + opt => opt.MapFrom(s => s.CurrentQuantity - s.AddedQuantity + s.RemovedQuantity)); + } } } } \ No newline at end of file diff --git a/InventoryTraker.Web/Models/UserViewModel.cs b/InventoryTraker.Web/Models/UserViewModel.cs index 025697d..0188446 100644 --- a/InventoryTraker.Web/Models/UserViewModel.cs +++ b/InventoryTraker.Web/Models/UserViewModel.cs @@ -1,10 +1,10 @@ using System.ComponentModel.DataAnnotations; -using Heroic.AutoMapper; +using AutoMapper; using InventoryTraker.Web.Core; namespace InventoryTraker.Web.Models { - public class UserViewModel : IMapFrom + public class UserViewModel { [Required] [StringLength(128)] @@ -20,5 +20,13 @@ namespace InventoryTraker.Web.Models { return $"UserName: {UserName}, email: {Email}"; } + + public class AutoMapperProfile : Profile + { + public AutoMapperProfile() + { + CreateMap(); + } + } } } \ No newline at end of file diff --git a/InventoryTraker.Web/Services/ReportService.cs b/InventoryTraker.Web/Services/ReportService.cs index 0fc6a05..ee1cff2 100644 --- a/InventoryTraker.Web/Services/ReportService.cs +++ b/InventoryTraker.Web/Services/ReportService.cs @@ -12,10 +12,12 @@ namespace InventoryTraker.Web.Services public class ReportService { private readonly AppDbContext _context; + private readonly IMapper _mapper; - public ReportService(AppDbContext context) + public ReportService(AppDbContext context, IMapper mapper) { _context = context; + _mapper = mapper; } public DistributionReport[] GetDistributionReport(DateTime startDate, DateTime endDate) @@ -42,7 +44,7 @@ namespace InventoryTraker.Web.Services Date = item.Date, Destination = item.Destination, Transactions = - Mapper.Map, IList> + _mapper.Map, IList> (item.Transactions).ToArray() }; @@ -149,7 +151,7 @@ namespace InventoryTraker.Web.Services into grp select new MovementReportItem { - InventoryType = Mapper.Map(grp.Key), + InventoryType = _mapper.Map(grp.Key), BeginningQuantity = grp.Sum(g => g.BeginningQuantity), AddedQuantity = grp.Sum(g => g.AddedQuantity), TotalAvailableQuantity = grp.Sum(g => g.TotalAvailableQuantity), diff --git a/InventoryTraker.Web/Utilities/DistributionReportWriter.cs b/InventoryTraker.Web/Utilities/DistributionReportWriter.cs index 45bda44..d87dcf2 100644 --- a/InventoryTraker.Web/Utilities/DistributionReportWriter.cs +++ b/InventoryTraker.Web/Utilities/DistributionReportWriter.cs @@ -6,14 +6,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 DistributionReportWriter { - public class DistributionReportExportItem : IMapFrom, IHaveCustomMappings + public class DistributionReportExportItem { public string Name { get; set; } public string UnitsPerCaseContainerType { get; set; } @@ -22,18 +21,21 @@ namespace InventoryTraker.Web.Utilities public string UnitQuantity { get; set; } public string Weight { get; set; } - public void CreateMappings(IMapperConfiguration configuration) + public class AutoMapperProfile : Profile { - configuration.CreateMap() + public AutoMapperProfile() + { + CreateMap() .ForMember(d => d.Name, opt => opt.MapFrom(i => i.Name)) .ForMember(d => d.UnitsPerCaseContainerType, opt => opt.MapFrom(i => $"{i.UnitsPerCase} / {i.ContainerType}")) .ForMember(d => d.ExpirationDate, opt => opt.MapFrom(i => i.ExpirationDate.ToShortDateString())) .ForMember(d => d.UnitQuantity, - opt => opt.MapFrom(i => i.RemovedQuantity*i.UnitsPerCase)) + opt => opt.MapFrom(i => i.RemovedQuantity * i.UnitsPerCase)) .ForMember(d => d.Weight, - opt => opt.MapFrom(i => $"{i.WeightPerCase*i.RemovedQuantity:0} lbs")); + opt => opt.MapFrom(i => $"{i.WeightPerCase * i.RemovedQuantity:0} lbs")); + } } } @@ -50,6 +52,13 @@ namespace InventoryTraker.Web.Utilities } } + private readonly IMapper _mapper; + + public DistributionReportWriter(IMapper mapper) + { + _mapper = mapper; + } + public byte[] Write(IEnumerable reports) { using (var stream = new MemoryStream()) @@ -75,7 +84,7 @@ namespace InventoryTraker.Web.Utilities writer.WriteField(report.Date.ToShortDateString()); writer.NextRecord(); var items = - Mapper.Map, IEnumerable> + _mapper.Map, IEnumerable> (report.Transactions) .OrderBy(i => i.Name); writer.WriteRecords(items); diff --git a/InventoryTraker.Web/Utilities/MovementReportWriter.cs b/InventoryTraker.Web/Utilities/MovementReportWriter.cs index 1144473..aafc49e 100644 --- a/InventoryTraker.Web/Utilities/MovementReportWriter.cs +++ b/InventoryTraker.Web/Utilities/MovementReportWriter.cs @@ -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, 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 formatCases = + public AutoMapperProfile() + { + Func formatCases = (cases, unitsPerCase) => $"{cases * unitsPerCase} ({cases} cs)"; - Func hideEmptyCases = - (cases, unitsPerCase) => - cases > 0 - ? formatCases(cases, unitsPerCase) - : ""; + Func hideEmptyCases = + (cases, unitsPerCase) => + cases > 0 + ? formatCases(cases, unitsPerCase) + : ""; - Func negative = - (cases, unitsPerCase) => - cases > 0 - ? "- " + hideEmptyCases(cases, unitsPerCase) - : ""; + Func negative = + (cases, unitsPerCase) => + cases > 0 + ? "- " + hideEmptyCases(cases, unitsPerCase) + : ""; - configuration.CreateMap() - .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() + .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($"Month: {report.Month:MMMM yyyy}"); writer.NextRecord(); var items = - Mapper.Map, IEnumerable> + _mapper.Map, IEnumerable> (report.Items) .OrderBy(i => i.Name); writer.WriteRecords(items); diff --git a/InventoryTraker.Web/Views/Profile/Index.cshtml b/InventoryTraker.Web/Views/Profile/Index.cshtml index dbc6e02..ae082e2 100644 --- a/InventoryTraker.Web/Views/Profile/Index.cshtml +++ b/InventoryTraker.Web/Views/Profile/Index.cshtml @@ -5,7 +5,7 @@ ViewBag.Title = "Your Profile"; } -

Update Your Profile

+

Update @ViewBag.Title

-
-@section Scripts -{ - -} \ No newline at end of file + \ No newline at end of file diff --git a/InventoryTraker.Web/Web.config b/InventoryTraker.Web/Web.config index 48f7c48..449d6b5 100644 --- a/InventoryTraker.Web/Web.config +++ b/InventoryTraker.Web/Web.config @@ -82,6 +82,10 @@ + + + + diff --git a/InventoryTraker.Web/js/profile/EditProfileController.js b/InventoryTraker.Web/js/profile/EditProfileController.js index b3993de..f2ff269 100644 --- a/InventoryTraker.Web/js/profile/EditProfileController.js +++ b/InventoryTraker.Web/js/profile/EditProfileController.js @@ -2,7 +2,7 @@ 'use strict'; window.app.controller('EditProfileController', - function($http, editProfileConfig, model) { + function($http, model) { var vm = this; vm.profile = model; @@ -13,7 +13,7 @@ vm.errorMessage = null; vm.success = false; - $http.post(editProfileConfig.saveUrl, vm.profile) + $http.post("/Profile/Update", vm.profile) .success(function() { vm.success = true; }) diff --git a/InventoryTraker.Web/packages.config b/InventoryTraker.Web/packages.config index fc774a7..09173dd 100644 --- a/InventoryTraker.Web/packages.config +++ b/InventoryTraker.Web/packages.config @@ -6,7 +6,7 @@ - + @@ -15,7 +15,6 @@ -