Exemplo n.º 1
0
        public static void Initialize()
        {
            Mapper.Initialize(cfg =>
            {
                // ENTITY TO DTO
                #region ENTITY TO DTO
                cfg.CreateMap <User, UserViewModel>()
                .ForMember(x => x.RoleName, opt => opt.MapFrom(x => x.UserRoles.FirstOrDefault().Role.Name))
                .ForMember(x => x.RoleId, opt => opt.MapFrom(x => x.UserRoles.FirstOrDefault().Role.Id));
                cfg.CreateMap <User, DetailedUserViewModel>();
                //  .ForMember(d => d.Projects,
                //  opt => opt.MapFrom(s => Mapper.Map<IEnumerable<Project>, IEnumerable<ProjectViewModel>>(s.Projects))); ;

                cfg.CreateMap <Project, ProjectViewModel>()
                .ForMember(d => d.Owner, opt => opt.MapFrom(s => Mapper.Map <User, UserViewModel>(s.User)))
                .ForMember(d => d.IsFavorite, opt => opt.MapFrom(x => x.User.FavoriteProjects.Contains(x)));
                cfg.CreateMap <Project, DetailedProjectViewModel>();
                cfg.CreateMap <Project, EditProjectViewModel>();
                // .ForMember(d => d.Users,
                //opt => opt.MapFrom(s => Mapper.Map<IEnumerable<User>, IEnumerable<UserViewModel>>(s.Users))); ;
                cfg.CreateMap <Attachment, AttachmentViewModel>()
                .ForMember(x => x.Url, opt => opt.MapFrom(x => GlobalSettings.UPLOADS_PATH + x.FileName))
                .ForMember(x => x.Type, opt => opt.MapFrom(x => x.FileName.Substring(x.FileName.LastIndexOf('.')).ToLower()))
                .ForMember(x => x.SizeAsString, opt => opt.MapFrom(x => GlobalSettings.BytesToString(x.Size)))
                ;
                cfg.CreateMap <Attachment, EditAttachmentViewModel>()
                .ForMember(x => x.FileName, opt => opt.MapFrom(x => GlobalSettings.UPLOADS_PATH + x.FileName));

                cfg.CreateMap <Ticket, EditTicketViewModel>()
                .ForMember(x => x.ProjectInfo, opt => opt.MapFrom(x => Mapper.Map <Project, ProjectViewModel>(x.ParentTicketId.HasValue ? x.Parent.Project : x.Project)))
                .ForMember(x => x.IsSubTask, opt => opt.MapFrom(x => x.ParentTicketId.HasValue))
                .ForMember(x => x.DueDate, opt => opt.MapFrom(x => x.DueDate.HasValue ? x.DueDate.Value.ToShortDateString() : ""))
                .ForMember(x => x.ParentTicketInfo, opt => opt.MapFrom(x => (x.ParentTicketId.HasValue ? Mapper.Map <Ticket, TicketViewModel>(x.Parent) : new TicketViewModel())));

                cfg.CreateMap <Ticket, TicketViewModel>()
                .ForMember(x => x.Title, opt => opt.MapFrom(x => String.IsNullOrEmpty(x.Title) ? "New Ticket-" + x.Id.ToString() : x.Title))
                .ForMember(x => x.CommentsCount, opt => opt.MapFrom(x => x.Comments.Any() ? x.Comments.Count : 0))
                .ForMember(x => x.Assignee, opt => opt.MapFrom(x => x.AssigneeId.HasValue ? Mapper.Map <User, UserViewModel>(x.Assignee) : null))
                .ForMember(x => x.ProjectInfo, opt => opt.MapFrom(x => Mapper.Map <Project, ProjectViewModel>(x.ParentTicketId.HasValue ? x.Parent.Project : x.Project)))
                ;

                cfg.CreateMap <NetworkTemplate, TemplateViewModel>()
                .ForMember(x => x.NetworkIp, opt => opt.MapFrom(x => x.Ip)).ReverseMap();
                cfg.CreateMap <DeviceTemplate, TemplateViewModel>()
                .ForMember(x => x.DeviceIp, opt => opt.MapFrom(x => x.Ip)).ReverseMap();
                cfg.CreateMap <UserTemplate, TemplateViewModel>()
                .ForMember(x => x.UserName, opt => opt.MapFrom(x => x.Name)).ReverseMap();
                cfg.CreateMap <ServerTemplate, TemplateViewModel>()
                .ForMember(x => x.ServerName, opt => opt.MapFrom(x => x.Name))
                .ForMember(x => x.Disks, opt => opt.MapFrom(x => Mapper.Map <List <ServerDiskTemplate>, List <ServerDiskTemplateViewModel> >(x.ServerDiskTemplates.ToList())))
                .ForMember(x => x.Networks, opt => opt.MapFrom(x => Mapper.Map <List <ServerNetworkTemplate>, List <ServerNetworkTemplateViewModel> >(x.ServerNetworkTemplates.ToList())))
                .ReverseMap();
                cfg.CreateMap <ServerDiskTemplate, ServerDiskTemplateViewModel>().ReverseMap();
                cfg.CreateMap <ServerNetworkTemplate, ServerNetworkTemplateViewModel>().ReverseMap();
                //cfg.CreateMap<Ticket, TicketKanabanViewModel>()
                //.ForMember(x=>x.ActiveTickets,opt=>opt.MapFrom(x=>x.SubTickets.Where(t=>t.StateId == (int)TicketStates.Active).ToList()))
                //.ForMember(x => x.DoneTickets, opt => opt.MapFrom(x => x.SubTickets.Where(t => t.StateId == (int)TicketStates.Done).ToList()))
                //.ForMember(x => x.DelayedTickets, opt => opt.MapFrom(x => x.SubTickets.Where(t => t.StateId == (int)TicketStates.Delayed).ToList()));
                cfg.CreateMap <Comment, CommentViewModel>()
                .ForMember(d => d.User, opt => opt.MapFrom(s => Mapper.Map <User, UserViewModel>(s.User)));
                #endregion

                // DTO TO ENTITY
                #region DTO TO ENTTY
                cfg.CreateMap <UserViewModel, User>();
                #endregion

                #region Dot to Dto
                cfg.CreateMap <UserViewModel, EditUserViewModel>();
                #endregion
            });
        }