using OASystem.Domain.Dtos.Groups;
using OASystem.Domain.Dtos.Resource;
using OASystem.Domain.Dtos.System;
using OASystem.Domain.Dtos.UserDto;
using OASystem.Domain.Entities;
using OASystem.Domain.Entities.Groups;
using OASystem.Domain.Entities.Resource;
using OASystem.Domain.Entities.System;
using OASystem.Domain.ViewModels;
using OASystem.Domain.ViewModels.Resource;
using OASystem.Domain.ViewModels.System;

namespace OASystem.Domain.AutoMappers
{
    public class _baseMappingProfile : Profile
    {
        public _baseMappingProfile()
        {
            #region Login
            CreateMap<LoginDto, Sys_Users>();
            #endregion

            #region Systen

            #region 消息

            CreateMap<Sys_Message, DepartmentIView>();
            CreateMap<Sys_MessageReadAuth, DepartmentIView>();
            #endregion

            #region 公司板块
            CreateMap<Sys_Company, CompanyView>();
            CreateMap<AddCompanyDto, Sys_Company>();
            CreateMap<EditCompanyDto, Sys_Company>();
            #endregion

            #region 部门板块
            CreateMap<Sys_Department, DepartmentIView>();
            CreateMap<AddDepartmentDto, Sys_Department>();
            CreateMap<EditDepartmentDto, Sys_Department>();
            #endregion

            #region 岗位板块
            CreateMap<Sys_JobPost, JobPostView>();
            CreateMap<AddJobPostDto, Sys_JobPost>();
            CreateMap<Sys_JobPostI, JobPostView>();
            #endregion

            #region 用户板块
            CreateMap<UserDto, Sys_Users>();
            CreateMap<Sys_Users, UserInfo>();
            CreateMap<UserInfo, UserInfoWebView>();

            #endregion

            #region 功能权限板块
            CreateMap<OperationFunInitDta, Sys_PageFunctionPermission>();
            #endregion

            #endregion

            #region Group

            CreateMap<GroupListDto, Grp_DelegationInfo>();
            CreateMap<Grp_ScheduleDetailUpdDto, Grp_ScheduleDetailInfo>();
            CreateMap<Grp_ScheduleDetailInsertDto, Grp_ScheduleDetailInfo>();
            #endregion

            #region Resource

            #region 车公司资料
            CreateMap<Res_CarData, CarDataView>();
            CreateMap<AddCarDataDto, Res_CarData>();
            CreateMap<Res_CarData, CarDataSelectView>();
            #endregion
            #region 导游地接资料
            CreateMap<Res_LocalGuideData, LocalGuideDataView>();
            CreateMap<LocalGuideOperationDto, Res_LocalGuideData>();
            #endregion
            #region 机场三字码资料
            CreateMap<Res_ThreeCode, ThreeCodeView>();
            CreateMap<ThreeCodeOperationDto, Res_ThreeCode>();
            #endregion
            #region 酒店资料数据
            CreateMap<Res_HotelData, HotelDataView>();
            CreateMap<Res_HotelData, QueryHotelDataSelect>();
            CreateMap<OperationHotelDto, Res_HotelData>();
            #endregion
            #region 签证费用资料
            CreateMap<Res_CountryFeeCost, CountryFeeCostView>();
            CreateMap<OperationCountryFeeCostDto, Res_CountryFeeCost>();
            #endregion
            #region 物料供应商
            CreateMap<Edit_ResItemVendorDto, Res_ItemVendor>()
                 .ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.VendorAddress))
                 .ForMember(dest => dest.CreateUserId, opt => opt.MapFrom(src => src.SysUserId))
                 .ForMember(dest => dest.Remark, opt => opt.MapFrom(src => src.Remark))
                 .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.VendorFullName))
                 .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.VendorId))
                 .ForMember(dest => dest.Job, opt => opt.MapFrom(src => src.VendorJob))
                 .ForMember(dest => dest.Linker, opt => opt.MapFrom(src => src.VendorLinker))
                 .ForMember(dest => dest.Mobile, opt => opt.MapFrom(src => src.VendorMobile))
                 .ForMember(dest => dest.ShortName, opt => opt.MapFrom(src => src.VendorShortName));

            CreateMap<Edit_ResItemInfoDto, Res_ItemDetailInfo>();
            #endregion
            #endregion
        }
    }
}