using AutoMapper;
using Newtonsoft.Json;
using Ropin.Inspection.Common.Helper;
using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using Ropin.Inspection.Model.ViewModel;
using Ropin.Inspection.Model.ViewModel.DEV;
using Ropin.Inspection.Model.ViewModel.LGS;
using Ropin.Inspection.Model.ViewModel.MTN;
using Ropin.Inspection.Model.ViewModel.SYS;
using Ropin.Inspection.Model.ViewModel.VMC;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Ropin.Environmentally.AlarmService.Helper
{
    public class AutoMapperProfile : Profile
    {
        public AutoMapperProfile()
        {
            CreateMap<TsysUserViewModel, TSYS_User>();
            CreateMap<TSYS_User, TsysUserViewModel>();
            CreateMap<TsysUserUpdateViewModel, TSYS_User>();
            CreateMap<TSYS_User, TsysUserUpdateViewModel>();
            CreateMap<TsysUserCreateViewModel, TSYS_User>();
            CreateMap<TSYS_User, TsysUserCreateViewModel>();
            CreateMap<TsysUserDetailViewModel, TSYS_User>();

            CreateMap<TispSpotViewModel, TISP_Spot>();
            CreateMap<TISP_Spot, TispSpotViewModel>();
            CreateMap<TispSpotUpdateViewModel, TISP_Spot>();
            CreateMap<TISP_Spot, TispSpotUpdateViewModel>();
            CreateMap<TispSpotCreateViewModel, TISP_Spot>();
            CreateMap<TISP_Spot, TispSpotCreateViewModel>();
            CreateMap<TispSpotByDevCreateViewModel, TISP_Spot>();
            CreateMap<TISP_Spot, TispSpotByDevCreateViewModel>();

            CreateMap<TispContentViewModel, TISP_Content>();
            CreateMap<TISP_Content, TispContentViewModel>();
            CreateMap<TispContentUpdateViewModel, TISP_Content>();
            CreateMap<TISP_Content, TispContentUpdateViewModel>();

            CreateMap<TispContentGroupViewModel, TISP_ContentGroup>();
            CreateMap<TISP_ContentGroup, TispContentGroupViewModel>();
            CreateMap<TispContentUpdateGroupViewModel, TISP_ContentGroup>();


            CreateMap<TispRecordViewModel, TISP_Record>();
            CreateMap<TISP_Record, TispRecordViewModel>();
            CreateMap<TispRecordUpdateViewModel, TISP_Record>();
            CreateMap<TISP_Record, TispRecordUpdateViewModel>();
            CreateMap<TispRecordCreateViewModel, TISP_Record>();
            CreateMap<TISP_Record, TispRecordCreateViewModel>();
            CreateMap<TispRecordItem, TISP_RecordItem>();
            CreateMap<TISP_RecordItem, TispRecordItem>();
            CreateMap<TispRecordItemCreateViewModel, TISP_RecordItem>();
            CreateMap<TISP_RecordItem, TispRecordItemCreateViewModel>();

            CreateMap<TispSpotContentViewModel, TISP_SpotContent>();
            CreateMap<TISP_SpotContent, TispSpotContentViewModel>();
            CreateMap<TispSpotContentUpdateViewModel, TISP_SpotContent>();
            CreateMap<TISP_SpotContent, TispSpotContentUpdateViewModel>();
            //CreateMap<TISP_SpotContent, TispContentViewModel>();
            //CreateMap<TispContentViewModel, TISP_SpotContent>();

            CreateMap<TispSpotUserViewModel, TISP_SpotUser>();
            CreateMap<TISP_SpotUser, TispSpotUserViewModel>();
            CreateMap<TispSpotUserUpdateViewModel, TISP_SpotUser>();
            CreateMap<TISP_SpotUser, TispSpotUserUpdateViewModel>();

            CreateMap<TsecRecordViewModel, TSEC_Record>();
            CreateMap<TSEC_Record, TsecRecordViewModel>();
            CreateMap<TsecRecordUpdateViewModel, TSEC_Record>();
            CreateMap<TSEC_Record, TsecRecordUpdateViewModel>();

            CreateMap<TispRecordImageViewModel, TISP_RecordImage>();
            CreateMap<TISP_RecordImage, TispRecordImageViewModel>();
            CreateMap<TispRecordImageUpdateViewModel, TISP_RecordImage>();
            CreateMap<TISP_RecordImage, TispRecordImageUpdateViewModel>();

            CreateMap<TsecRecordItemViewModel, TISP_SecurityItem>();
            CreateMap<TISP_SecurityItem, TsecRecordItemViewModel>();

            CreateMap<TispRouteUpdateViewModel, TISP_Route>();
            CreateMap<TISP_Route, TispRouteViewModel>();
            CreateMap<TispRouteViewModel,TISP_Route> ();
            CreateMap<TispSpotRouteViewModel, TISP_SpotRoute>();
            CreateMap<TISP_SpotRoute, TispSpotRouteViewModel> ();

            CreateMap<ReportViewModel, TISP_Report>();
            CreateMap<TISP_Report, ReportViewModel>();
            CreateMap<ReportUpdateViewModel, TISP_Report>();

            CreateMap<TispRegionUpdateViewModel, TISP_Region>();
            CreateMap<TISP_Region, TispRegionViewModel>();
            CreateMap<TispRegionViewModel, TISP_Region>();
            CreateMap<TispSpotRegionViewModel, TISP_SpotRegion>();
            CreateMap<TISP_SpotRegion, TispSpotRegionViewModel>();

            CreateMap<TSYS_Post, TsysPostViewModel>();
            CreateMap<TsysPostViewModel, TSYS_Post>();
            CreateMap<TsysPostUpdateViewModel, TSYS_Post>();
            CreateMap<TSYS_Post, TsysPostUpdateViewModel>();

            CreateMap<TSYS_Org, TsysOrganizeViewModel>();
            CreateMap<TsysOrganizeViewModel, TSYS_Org>();
            CreateMap<TsysOrganizeCreateViewModel, TSYS_Org>();         
            CreateMap<TsysOrganizeUpdateViewModel, TSYS_Org>();
            CreateMap<TSYS_Org, TsysOrganizeUpdateViewModel>();


            CreateMap<TSYS_Role, TsysRoleViewModel>();
            CreateMap<TsysRoleViewModel, TSYS_Role>();
            CreateMap<TsysRoleCreateViewModel, TSYS_Role>();
            CreateMap<TsysRoleUpdateViewModel, TSYS_Role>();
            CreateMap<TSYS_Role, TsysRoleUpdateViewModel>();


            CreateMap<TSYS_Priv, TsysPrivViewModel>();
            CreateMap<TsysPrivViewModel, TSYS_Priv>();


            CreateMap<TsysLicenseUpdateModel, TSYS_License>();
            CreateMap<TSYS_License, TsysLicenseViewModel>();
            CreateMap<TsysLicenseViewModel, TSYS_License>();
            CreateMap<TSYS_LicenseType, TsysLicenseTypeViewModel>();

            CreateMap<TsysMessageUpdateModel, TSYS_Message>();
            CreateMap<TSYS_Message, TsysMessageViewModel>();
            CreateMap<TsysMessageViewModel, TSYS_Message>();

            CreateMap<TsysVersionUpdateModel, TSYS_Version>();
            CreateMap<TSYS_Version, TsysVersionViewModel>();
            CreateMap<TsysVersionViewModel, TSYS_Version>();
            
            CreateMap<TpntStoreCreateModel, TPNT_Store>();
            CreateMap<TpntStoreUpdateModel, TPNT_Store>();
            CreateMap<TPNT_Store, TpntStoreViewModel>();
            CreateMap<TpntStoreViewModel, TPNT_Store>();

            CreateMap<TpntAreaUpdateModel, TPNT_Area>();
            CreateMap<TPNT_Area, TpntAreaViewModel>();
            CreateMap<TpntAreaViewModel, TPNT_Area>();

            CreateMap<TPNT_Type, TpntTypeViewModel>();

            CreateMap<TprdTypeCreateModel, TPRD_Type>();
            CreateMap<TprdTypeUpdateModel, TPRD_Type>();
            CreateMap<TPRD_Type, TprdTypeViewModel>();
            CreateMap<TprdTypeViewModel, TPRD_Type>();

            CreateMap<TprdProdSKUCreateModel, TPRD_ProdSKU>();
            CreateMap<TprdProdSKUUpdateModel, TPRD_ProdSKU>();
            CreateMap<TPRD_ProdSKU, TprdProdSKUViewModel>();
            CreateMap<TprdProdSKUViewModel, TPRD_ProdSKU>();


            CreateMap<TprdProductCreateModel, TPRD_Product>();
            CreateMap<TprdProductUpdateModel, TPRD_Product>();
            CreateMap<TPRD_Product, TprdProductViewModel>();
            CreateMap<TprdProductViewModel, TPRD_Product>();

            CreateMap<TprdLogCreateModel, TPRD_Log>();
            CreateMap<TprdLogUpdateModel, TPRD_Log>();
            CreateMap<TPRD_Log, TprdLogViewModel>();
            CreateMap<TprdLogViewModel, TPRD_Log>();

            CreateMap<TpntStoreOrgViewModel, TPNT_StoreOrg>();
            CreateMap<TPNT_StoreOrg, TpntStoreOrgViewModel>();

            CreateMap<TdevDeviceTempArchivesCreateModel, TDEV_DeviceTempArchives>();
            CreateMap<TdevDeviceTempArchivesUpdateModel, TDEV_DeviceTempArchives>();
            CreateMap<TDEV_DeviceTempArchives, TdevDeviceTempArchivesViewModel>();
            CreateMap<TdevDeviceTempArchivesViewModel, TDEV_DeviceTempArchives>();

            CreateMap<TdevDevicePartCreateModel, TDEV_DevicePart>();
            CreateMap<TdevDevicePartUpdateModel, TDEV_DevicePart>();
            CreateMap<TDEV_DevicePart, TdevDevicePartViewModel>();
            CreateMap<TdevDevicePartViewModel, TDEV_DevicePart>();

            CreateMap<TdevDeviceTemplateCreateModel, TDEV_DeviceTemplate>();
            CreateMap<TdevDeviceTemplateUpdateModel, TDEV_DeviceTemplate>();
            CreateMap<TDEV_DeviceTemplate, TdevDeviceTemplateViewModel>();
            CreateMap<TdevDeviceTemplateViewModel, TDEV_DeviceTemplate>();

            CreateMap<TdevDevSpotCreateModel, TDEV_DevSpot>();
            CreateMap<TdevDevSpotUpdateModel, TDEV_DevSpot>();
            CreateMap<TDEV_DevSpot, TdevDevSpotViewModel>();
            CreateMap<TdevDevSpotViewModel, TDEV_DevSpot>();

            CreateMap<TdevDevOpeAccountCreateModel, TDEV_DevOpeAccount>();
            CreateMap<TdevDevOpeAccountUpdateModel, TDEV_DevOpeAccount>();
            CreateMap<TDEV_DevOpeAccount, TdevDevOpeAccountViewModel>();
            CreateMap<TdevDevOpeAccountViewModel, TDEV_DevOpeAccount>();
            

            CreateMap<TdevDevStoreCreateModel, TDEV_DevStore>();
            CreateMap<TdevDevStoreUpdateModel, TDEV_DevStore>();
            CreateMap<TDEV_DevStore, TdevDevStoreViewModel>().BeforeMap((x, y) => {
                if (!string.IsNullOrWhiteSpace(x.C_GPS))
                {
                    y.LNG = x.C_GPS.Split(",")[0];
                    y.LAT = x.C_GPS.Split(",")[1];
                }
            });
            CreateMap<TdevDevStoreViewModel, TDEV_DevStore>();

            CreateMap<TDEV_DevStoreMigrate, TdevDevStoreMigrateViewModel>();
            CreateMap<TdevDevStoreMigrateViewModel, TDEV_DevStoreMigrate>();
            
            CreateMap<TdevDevStoreLogCreateModel, TDEV_DevStoreLog>();
            CreateMap<TdevDevStoreLogUpdateModel, TDEV_DevStoreLog>();
            CreateMap<TDEV_DevStoreLog, TdevDevStoreLogViewModel>();
            CreateMap<TdevDevStoreLogViewModel, TDEV_DevStoreLog>();

            CreateMap<TdevMaintenanceKnowledgeCreateModel, TDEV_MaintenanceKnowledge>();
            CreateMap<TdevMaintenanceKnowledgeUpdateModel, TDEV_MaintenanceKnowledge>();
            CreateMap<TDEV_MaintenanceKnowledge, TdevMaintenanceKnowledgeViewModel>();
            CreateMap<TdevMaintenanceKnowledgeViewModel, TDEV_MaintenanceKnowledge>();

            CreateMap<TdevMaintenancePlanCreateModel, TDEV_MaintenancePlan>();
            CreateMap<TdevMaintenancePlanUpdateModel, TDEV_MaintenancePlan>();
            CreateMap<TDEV_MaintenancePlan, TdevMaintenancePlanViewModel>();
            CreateMap<TdevMaintenancePlanViewModel, TDEV_MaintenancePlan>();

            CreateMap<TdevMaintenancePlanContentCreateModel, TDEV_MaintenancePlanContent>();
            CreateMap<TdevMaintenancePlanContentUpdateModel, TDEV_MaintenancePlanContent>();
            CreateMap<TDEV_MaintenancePlanContent, TdevMaintenancePlanContentViewModel>();
            CreateMap<TdevMaintenancePlanContentViewModel, TDEV_MaintenancePlanContent>();

            CreateMap<TdevMaintenanceTemplateCreateModel, TDEV_MaintenanceTemplate>();
            CreateMap<TdevMaintenanceTemplateUpdateModel, TDEV_MaintenanceTemplate>();
            CreateMap<TDEV_MaintenanceTemplate, TdevMaintenanceTemplateViewModel>();
            CreateMap<TdevMaintenanceTemplateViewModel, TDEV_MaintenanceTemplate>();

            CreateMap<TmtnDevOperateRecordCreateModel, TMTN_DevOperateRecord>();
            CreateMap<TmtnDevOperateRecordUpdateModel, TMTN_DevOperateRecord>();
            CreateMap<TMTN_DevOperateRecord, TmtnDevOperateRecordViewModel>();
            CreateMap<TmtnDevOperateRecordViewModel, TMTN_DevOperateRecord>();

            CreateMap<TmtnDevOpsContentCreateModel, TMTN_DevOpsContent>();
            CreateMap<TmtnDevOpsContentUpdateModel, TMTN_DevOpsContent>();
            CreateMap<TMTN_DevOpsContent, TmtnDevOpsContentViewModel>();
            CreateMap<TmtnDevOpsContentViewModel, TMTN_DevOpsContent>();

            CreateMap<TmtnDevOpsCreateModel, TMTN_DevOps>();
            CreateMap<TmtnDevOpsUpdateModel, TMTN_DevOps>();
            CreateMap<TMTN_DevOps, TmtnDevOpsViewModel>();
            CreateMap<TmtnDevOpsViewModel, TMTN_DevOps>();

            CreateMap<TmtnDevOpsRecordCreateModel, TMTN_DevOpsRecord>();
            //.BeforeMap((x, y) => {
            //    if (!string.IsNullOrWhiteSpace(x.SolidWasteNumber))
            //    {
            //        y.C_Remark = JsonConvert.SerializeObject(new 
            //        { 
            //            NameSpecification = x.NameSpecification,
            //            SpecificationNumber = x.SpecificationNumber,
            //            SpecificationUnit = x.SpecificationUnit,
            //            SolidWasteNumber = x.SolidWasteNumber,
            //            SolidWasteUnit = x.SolidWasteUnit,

            //        });
            //    }
            //});
            CreateMap<TmtnDevOpsRecordUpdateModel, TMTN_DevOpsRecord>();
            CreateMap<TMTN_DevOpsRecord, TmtnDevOpsRecordViewModel>();
            CreateMap<TmtnDevOpsRecordViewModel, TMTN_DevOpsRecord>();

            CreateMap<TmtnRepairOrderCreateModel, TMTN_RepairOrder>();
            CreateMap<TmtnRepairOrderUpdateModel, TMTN_RepairOrder>();
            CreateMap<TMTN_RepairOrder, TmtnRepairOrderViewModel>();
            CreateMap<TmtnRepairOrderViewModel, TMTN_RepairOrder>();
            


            CreateMap<TmtnRepairOrderItemCreateModel, TMTN_RepairOrderItem>();
            CreateMap<TmtnRepairOrderItemUpdateModel, TMTN_RepairOrderItem>();
            CreateMap<TMTN_RepairOrderItem, TmtnRepairOrderItemViewModel>();
            CreateMap<TmtnRepairOrderItemViewModel, TMTN_RepairOrderItem>();

            CreateMap<TmtnSpotDevOpsContentCreateModel, TMTN_SpotDevOpsContent>();
            CreateMap<TmtnSpotDevOpsContentUpdateModel, TMTN_SpotDevOpsContent>();
            CreateMap<TMTN_SpotDevOpsContent, TmtnSpotDevOpsContentViewModel>();
            CreateMap<TmtnSpotDevOpsContentViewModel, TMTN_SpotDevOpsContent>();

            CreateMap<TBDM_CodeMain, TbdmCodeViewModel>();
            CreateMap<TbdmCodeViewModel, TBDM_CodeMain>();

            CreateMap<TBDM_CodeDetail, TbdmDetailCode>();
            CreateMap<TbdmCodeDetailCreateModel, TBDM_CodeDetail>();
            CreateMap<TbdmCodeDetailUpdateModel, TBDM_CodeDetail>();

            CreateMap<TmtnPushMsgToCreateModel, TMTN_PushMsgTo>();
            CreateMap<TmtnPushMsgToUpdateModel, TMTN_PushMsgTo>();
            CreateMap<TMTN_PushMsgTo, TmtnPushMsgToViewModel>();
            CreateMap<TmtnPushMsgToViewModel, TMTN_PushMsgTo>();

            CreateMap<TmtnPushMsgResultCreateModel, TMTN_PushMsgResult>();
            CreateMap<TmtnPushMsgResultUpdateModel, TMTN_PushMsgResult>();
            CreateMap<TMTN_PushMsgResult, TmtnPushMsgResultViewModel>().BeforeMap((x, y) =>
            {
                if (!string.IsNullOrWhiteSpace(x.C_Content))
                {
                    y.PushMsg = JsonConvert.DeserializeObject<TpushMsgModel>(x.C_Content);
                    y.PushMsg.CreateOn = x.D_CreateOn.ToString();
                }
            });
            CreateMap<TMTN_PushMsgResultModel, TmtnPushMsgResultViewModel>().BeforeMap((x, y) => {
                if (!string.IsNullOrWhiteSpace(x.C_Content))
                {
                    y.PushMsg = JsonConvert.DeserializeObject<TpushMsgModel>(x.C_Content);
                    y.PushMsg.CreateOn = x.D_CreateOn.ToString();
                }
            });
            CreateMap<TmtnPushMsgResultViewModel, TMTN_PushMsgResult>();

            CreateMap<TdevWebScadaCreateModel, TDEV_WebScada>();
            CreateMap<TdevWebScadaUpdateModel, TDEV_WebScada>();
            CreateMap<TDEV_WebScada, TdevWebScadaViewModel>();
            CreateMap<TdevWebScadaViewModel, TDEV_WebScada>();

            CreateMap<TdevWebScadaDevSpotCreateModel, TDEV_WebScadaDevSpot>();
            CreateMap<TdevWebScadaDevSpotUpdateModel, TDEV_WebScadaDevSpot>();
            CreateMap<TDEV_WebScadaDevSpot, TdevWebScadaDevSpotViewModel>().BeforeMap((x, y) => {
                y.BMinax = false;
                y.BAlarm = false;
                y.FBMinax = false;
                y.IsCalFormula = false;
                if (x.C_CalFormula != null)
                {
                    List<CalFormula> cf = JsonConvert.DeserializeObject<List<CalFormula>>(x.C_CalFormula);
                    foreach (var item in cf)
                    {
                        if (item.Name == "changecolour")
                        {
                            y.BMinax = true;
                            y.MinValue = item.Value.Dequeue();
                            y.MaxValue = item.Value.Dequeue();
                        }
                        else if (item.Name == "minchangecolour")
                        {
                            y.FBMinax = true;
                            y.FMinValue = item.Value.Dequeue();
                            y.FMaxValue = item.Value.Dequeue();
                        }
                        else if(item.Name == "alarmlight")
                        {
                            y.BAlarm = true;
                            y.AlarmValue = item.Value.Dequeue();
                        }
                        else
                        {
                            if (item.Name!= "noformula")
                            {
                                y.IsCalFormula = true;
                                y.C_CalFormula= JsonConvert.SerializeObject(item);
                            }
                        }
                    }
                }

                
            });
            CreateMap<TDEV_WebScadaDevSpotEndity, TdevWebScadaDevSpotViewModel>().BeforeMap((x, y) => {
                y.BMinax = false;
                y.BAlarm = false;
                y.FBMinax = false;
                y.IsCalFormula = false;
                if (x.C_CalFormula != null)
                {
                    List<CalFormula> cf = JsonConvert.DeserializeObject<List<CalFormula>>(x.C_CalFormula);
                    foreach (var item in cf)
                    {
                        if (item.Name == "changecolour")
                        {
                            y.BMinax = true;
                            y.MinValue = item.Value.Dequeue();
                            y.MaxValue = item.Value.Dequeue();
                        }
                        else if (item.Name == "minchangecolour")
                        {
                            y.FBMinax = true;
                            y.FMinValue = item.Value.Dequeue();
                            y.FMaxValue = item.Value.Dequeue();
                        }
                        else if (item.Name == "alarmlight")
                        {
                            y.BAlarm = true;
                            y.AlarmValue = item.Value.Dequeue();
                        }
                        else
                        {
                            if (item.Name != "noformula")
                            {
                                y.IsCalFormula = true;
                                y.C_CalFormula = JsonConvert.SerializeObject(item);
                            }
                        }
                    }
                }


            });
            CreateMap<TdevWebScadaDevSpotViewModel, TDEV_WebScadaDevSpot>();


            CreateMap<TdevDeviceTempOpsContentCreateModel, TDEV_DeviceTempOpsContent>();
            CreateMap<TdevDeviceTempOpsContentUpdateModel, TDEV_DeviceTempOpsContent>();
            CreateMap<TDEV_DeviceTempOpsContent, TdevDeviceTempOpsContentViewModel>();
            CreateMap<TdevDeviceTempOpsContentViewModel, TDEV_DeviceTempOpsContent>();

            //CreateMap<TdevDevStoreDocViewModel, TDEV_DevStoreDoc>();
            //CreateMap<TdevDevStoreDocViewModel, TDEV_DevStoreDoc>();
            CreateMap<TDEV_DevStoreDoc, TdevDevStoreDocViewModel>();
            CreateMap<TdevDevStoreDocViewModel, TDEV_DevStoreDoc>();

            CreateMap<TdevBoxTemplateCreateModel, TDEV_BoxTemplate>();
            CreateMap<TdevBoxTemplateUpdateModel, TDEV_BoxTemplate>();
            CreateMap<TDEV_BoxTemplate, TdevBoxTemplateViewModel>();
            CreateMap<TdevBoxTemplateViewModel, TDEV_BoxTemplate>(); 

            CreateMap<TdevBoxCreateModel, TDEV_Box>();
            CreateMap<TdevBoxUpdateModel, TDEV_Box>();
            CreateMap<TDEV_Box, TdevBoxViewModel>();
            CreateMap<TdevBoxViewModel, TDEV_Box>();

            CreateMap<TdevBoxDevSpotCreateModel, TDEV_BoxDevSpot>();
            CreateMap<TdevBoxDevSpotUpdateModel, TDEV_BoxDevSpot>();
            CreateMap<TDEV_BoxDevSpot, TdevBoxDevSpotViewModel>();
            CreateMap<TdevBoxDevSpotViewModel, TDEV_BoxDevSpot>();

            CreateMap<DEV_DevOpeAccountConfigModel, TDEV_DevOpeAccountConfig>();
            CreateMap<TDEV_DevOpeAccountConfig, DEV_DevOpeAccountConfigModel>();


            CreateMap<TDEV_Hand, dev_HandModel>();
            CreateMap<dev_HandModel,TDEV_Hand>();
            CreateMap<TDEV_Hand, devHandViewModel>();
            CreateMap<devHandViewModel, TDEV_Hand>();

            CreateMap<TSYS_RoleHand, TSYSRoleHandViewModel>();
            CreateMap<TSYSRoleHandViewModel, TSYS_RoleHand>();
            CreateMap<TSYS_RoleHand, TSYSRoleHandModel>();
            CreateMap<TSYSRoleHandModel, TSYS_RoleHand>();


            CreateMap<TMTN_AlarmOrder, AlarmOrderViewModel>();
            CreateMap<AlarmOrderViewModel, TMTN_AlarmOrder>();
            CreateMap<TMTN_AlarmOrder, AddAlarmOrderViewModel>();
            CreateMap<AddAlarmOrderViewModel, TMTN_AlarmOrder>();

            CreateMap<AlarmOrderRecordViewModel, TMTN_AlarmHandleRecord>();
            CreateMap<TMTN_AlarmHandleRecord, AlarmOrderRecordViewModel>();

            CreateMap<AlarmOrderFile, TMTN_AlarmHandleRecordApp>();
            CreateMap<TMTN_AlarmHandleRecordApp, AlarmOrderFile>();

            CreateMap<dev_DevBoxMigrateModel, TDEV_DevBoxMigrate>();
            CreateMap<TDEV_DevBoxMigrate, dev_DevBoxMigrateModel>();

            CreateMap<LGS_LargeScreenTemplateViewModel, TLGS_LargeScreenTemplate>();
            CreateMap<TLGS_LargeScreenTemplate, LGS_LargeScreenTemplateViewModel>();

            CreateMap<LargeScreenViewModel, TLGS_LargeScreen>();
            CreateMap<TLGS_LargeScreen, LargeScreenViewModel>();

            CreateMap<sysLoginViewModel, TSYS_Login>();
            CreateMap<TSYS_Login, sysLoginViewModel>();

            CreateMap<LicenseLargeScreenTemplateModel, TSYS_LicenseLargeScreenTemplate>();
            CreateMap<TSYS_LicenseLargeScreenTemplate, LicenseLargeScreenTemplateModel>();

            CreateMap<LargeScreenControlViewModel, TLGS_LargeScreenControl>();
            CreateMap<TLGS_LargeScreenControl, LargeScreenControlViewModel>();

            CreateMap<LargeScreenEventViewModel, TLGS_LargeScreenEvent>();
            CreateMap<TLGS_LargeScreenEvent, LargeScreenEventViewModel>();

            CreateMap<DevCmdViewModel, TDEV_Cmd>();
            CreateMap<TDEV_Cmd, DevCmdViewModel>();

            CreateMap<DevInstructionViewModel, TDEV_Instruction>();
            CreateMap<TDEV_Instruction, DevInstructionViewModel>();

            CreateMap<DevCmdInstructionViewModel, TDEV_CmdInstruction>();
            CreateMap<TDEV_CmdInstruction, DevCmdInstructionViewModel>();

            CreateMap<VmcCameraTemplateViewModel, TVMC_CameraTemplate>();
            CreateMap<TVMC_CameraTemplate, VmcCameraTemplateViewModel>();

            CreateMap<VmcCameraViewModel, TVMC_Camera>();
            CreateMap<TVMC_Camera, VmcCameraViewModel>();

            ////映射发生之前
            //   .BeforeMap((source, dto) => {
            //        //可以较为精确的控制输出数据格式
            //        dto.CreateTime = Convert.ToDateTime(source.CreateTime).ToString("yyyy-MM-dd");
            //    })
            //   //映射发生之后
            //   .AfterMap((source, dto) => {
            //       //code ...
            //   });
            //CreateMap<TsysUserUpdateViewModel, TsysUserModel>();
            //CreateMap<TsysUserModel, TsysUserUpdateViewModel>();

        }
    }
}