using AutoMapper;
using LeafWeb.Core.Entities;

namespace LeafWeb.Core.Remote
{
	public class PiscalLeafInputFile
	{
		private static readonly IMapper Mapper;

		public int LeafInputId { get; set; }
		public string Filename { get; set; }
		public byte[] Contents { get; set; }
		public string DirectoryName { get; set; }

		static PiscalLeafInputFile()
		{
			var config =
			new MapperConfiguration(cfg =>
			{
				cfg.CreateMap<LeafInputFile, PiscalLeafInputFile>()
					.ForMember(dest => dest.DirectoryName, opt => opt.MapFrom(
						src => PiscalUtility.GetPiscalDirectoryName(src)))
					.ForMember(dest => dest.LeafInputId, opt => opt.MapFrom(src => src.Id));
			});
			Mapper = config.CreateMapper();
		}

		public PiscalLeafInputFile() { }

		public PiscalLeafInputFile(LeafInputFile leafInputFile)
		{
			Mapper.Map(leafInputFile, this);
		}
	}
}
