Пример #1
0
        public async Task <(bool Succeeded, string[] Errors)> CreateRoleAsync(ApplicationRole role,
                                                                              IEnumerable <string> claims)
        {
            if (claims == null)
            {
                claims = new string[] { }
            }
            ;

            var invalidClaims = claims.Where(c => ApplicationPermissions.GetPermissionByValue(c) == null).ToArray();

            if (invalidClaims.Any())
            {
                return(false, new[] { "The following claim types are invalid: " + string.Join(", ", invalidClaims) });
            }


            var result = await _roleManager.CreateAsync(role);

            if (!result.Succeeded)
            {
                return(false, result.Errors.Select(e => e.Description).ToArray());
            }


            role = await _roleManager.FindByNameAsync(role.Name);

            foreach (var claim in claims.Distinct())
            {
                result = await _roleManager.AddClaimAsync(role,
                                                          new Claim(ClaimConstants.Permission, ApplicationPermissions.GetPermissionByValue(claim)));

                if (!result.Succeeded)
                {
                    await DeleteRoleAsync(role);

                    return(false, result.Errors.Select(e => e.Description).ToArray());
                }
            }

            return(true, new string[] { });
        }
Пример #2
0
        public async Task <(bool Succeeded, string[] Errors)> UpdateRoleAsync(ApplicationRole role,
                                                                              IEnumerable <string> claims)
        {
            if (claims != null)
            {
                var invalidClaims = claims.Where(c => ApplicationPermissions.GetPermissionByValue(c) == null).ToArray();
                if (invalidClaims.Any())
                {
                    return(false,
                           new[] { "The following claim types are invalid: " + string.Join(", ", invalidClaims) });
                }
            }


            var result = await _roleManager.UpdateAsync(role);

            if (!result.Succeeded)
            {
                return(false, result.Errors.Select(e => e.Description).ToArray());
            }


            if (claims != null)
            {
                var roleClaims =
                    (await _roleManager.GetClaimsAsync(role)).Where(c => c.Type == ClaimConstants.Permission);
                var roleClaimValues = roleClaims.Select(c => c.Value).ToArray();

                var claimsToRemove = roleClaimValues.Except(claims).ToArray();
                var claimsToAdd    = claims.Except(roleClaimValues).Distinct().ToArray();

                if (claimsToRemove.Any())
                {
                    foreach (var claim in claimsToRemove)
                    {
                        result = await _roleManager.RemoveClaimAsync(role,
                                                                     roleClaims.Where(c => c.Value == claim).FirstOrDefault());

                        if (!result.Succeeded)
                        {
                            return(false, result.Errors.Select(e => e.Description).ToArray());
                        }
                    }
                }

                if (claimsToAdd.Any())
                {
                    foreach (var claim in claimsToAdd)
                    {
                        result = await _roleManager.AddClaimAsync(role,
                                                                  new Claim(ClaimConstants.Permission, ApplicationPermissions.GetPermissionByValue(claim)));

                        if (!result.Succeeded)
                        {
                            return(false, result.Errors.Select(e => e.Description).ToArray());
                        }
                    }
                }
            }

            return(true, new string[] { });
        }
Пример #3
0
        public AutoMapperProfile()
        {
            CreateMap <ApplicationUser, UserViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserViewModel, ApplicationUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserEditViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserEditViewModel, ApplicationUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserPatchViewModel>()
            .ReverseMap();

            CreateMap <ApplicationRole, RoleViewModel>()
            .ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims))
            .ForMember(d => d.UsersCount, map => map.ResolveUsing(s => s.Users?.Count ?? 0))
            .ReverseMap()
            .ForMember(d => d.Claims, map => map.Ignore());

            CreateMap <IdentityRoleClaim <string>, ClaimViewModel>()
            .ForMember(d => d.Type, map => map.MapFrom(s => s.ClaimType))
            .ForMember(d => d.Value, map => map.MapFrom(s => s.ClaimValue))
            .ReverseMap();

            CreateMap <ApplicationPermission, PermissionViewModel>()
            .ReverseMap();

            CreateMap <IdentityRoleClaim <string>, PermissionViewModel>()
            .ConvertUsing(s => Mapper.Map <PermissionViewModel>(ApplicationPermissions.GetPermissionByValue(s.ClaimValue)));

            CreateMap <Counterparty, CounterpartyDto>()
            .ReverseMap();

            CreateMap <Product, ProductListDto>()
            .ReverseMap();

            CreateMap <Product, ProductDetailsDto>()
            .ReverseMap();

            CreateMap <Product, ProductEditDto>()
            .ReverseMap();

            CreateMap <DAL.Models.ProductCategory, ProductCategoryDto>()
            .ReverseMap();

            CreateMap <DAL.Models.ProductCategory, CreateProductCategoryDto>()
            .ReverseMap();

            CreateMap <DAL.Models.ProductCategory, EditProductCategoryDto>()
            .ReverseMap();

            CreateMap <Order, OrderListDto>()
            .ReverseMap();


            //CreateMap<OrderEditDTO, Order>()
            //    .ForMember(f => f.OrderLines, opt => opt.Ignore());

            CreateMap <Order, OrderEditDto>()
            .ReverseMap();

            CreateMap <OrderLine, OrderLineDTO>()
            .ReverseMap();

            CreateMap <Shipment, ShipmentDto>()
            .ForMember(f => f.OrderLines, map => map.MapFrom(s => s.Order.OrderLines))
            .ReverseMap();

            CreateMap <Storage, StorageDto>()
            .ReverseMap();

            CreateMap <ActivityLog, ActivityLogDto>()
            .ReverseMap();
        }
Пример #4
0
        public async Task <ApiResponse> GetRolesAsync(int pageSize = 0, int pageNumber = 0)
        {
            var roleQuery    = _roleManager.Roles.AsQueryable().OrderBy(x => x.Id);
            var count        = roleQuery.Count();
            var listResponse = (pageSize > 0 ? roleQuery.Skip(pageNumber * pageSize).Take(pageSize) : roleQuery).ToList();

            var roleDtoList = new List <RoleDto>();

            foreach (var role in listResponse)
            {
                var claims = await _roleManager.GetClaimsAsync(role);

                var permissions = claims.Where(x => x.Type == ClaimConstants.Permission).Select(x => _applicationPermissions.GetPermissionByValue(x.Value).Name).ToList();

                roleDtoList.Add(new RoleDto
                {
                    Name        = role.Name,
                    Permissions = permissions
                });
            }

            return(new ApiResponse(Status200OK, L["{0} roles fetched", count], roleDtoList));
        }
Пример #5
0
        public async Task <ApiResponse> CreateRoleAsync([FromBody] RoleDto newRole)
        {
            try
            {
                // first make sure the role doesn't already exist
                if (_roleManager.Roles.Any(r => r.Name == newRole.Name))
                {
                    return(new ApiResponse(400, "role already exists"));
                }

                // Create the role
                var result = await _roleManager.CreateAsync(new IdentityRole <Guid>(newRole.Name));

                if (!result.Succeeded)
                {
                    string errorMessage = result.Errors.Select(x => x.Description).Aggregate((i, j) => i + " - " + j);
                    return(new ApiResponse(500, errorMessage));
                }

                // Re-create the permissions
                IdentityRole <Guid> role = await _roleManager.FindByNameAsync(newRole.Name);

                foreach (string claim in newRole.Permissions)
                {
                    var resultAddClaim = await _roleManager.AddClaimAsync(role, new Claim(ClaimConstants.Permission, ApplicationPermissions.GetPermissionByValue(claim)));

                    if (!resultAddClaim.Succeeded)
                    {
                        await _roleManager.DeleteAsync(role);
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ApiResponse(500, ex.Message));
            }

            return(new ApiResponse(200));
        }
Пример #6
0
        public async Task <ApiResponse> UpdateRoleAsync([FromBody] RoleDto newRole)
        {
            try
            {
                // first make sure the role already exist
                if (!_roleManager.Roles.Any(r => r.Name == newRole.Name))
                {
                    return(new ApiResponse(400, "This role doesn't exists"));
                }

                // Create the permissions
                IdentityRole <Guid> identityRole = await _roleManager.FindByNameAsync(newRole.Name);

                var claims = await _roleManager.GetClaimsAsync(identityRole);

                var permissions = claims.Where(x => x.Type == ClaimConstants.Permission).Select(x => x.Value).ToList();
                foreach (var permission in permissions)
                {
                    await _roleManager.RemoveClaimAsync(identityRole, new Claim(ClaimConstants.Permission, permission));
                }

                foreach (string claim in newRole.Permissions)
                {
                    var result = await _roleManager.AddClaimAsync(identityRole, new Claim(ClaimConstants.Permission, ApplicationPermissions.GetPermissionByValue(claim)));

                    if (!result.Succeeded)
                    {
                        await _roleManager.DeleteAsync(identityRole);
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ApiResponse(500, ex.Message));
            }

            return(new ApiResponse(200));
        }
Пример #7
0
        public async Task <Tuple <bool, string[]> > CreateRoleAsync <TRole>(TRole role, IEnumerable <string> claims)
        {
            var entityRole = this.Mapper.Map <Role>(role);

            if (claims == null)
            {
                claims = new string[] { };
            }

            string[] invalidClaims = claims.Where(c => ApplicationPermissions.GetPermissionByValue(c) == null).ToArray();
            if (invalidClaims.Any())
            {
                return(Tuple.Create(false, new[] { "The following claim types are invalid: " + string.Join(", ", invalidClaims) }));
            }

            var result = await this.roleManager.CreateAsync(entityRole);

            if (!result.Succeeded)
            {
                return(Tuple.Create(false, result.Errors.Select(e => e.Description).ToArray()));
            }

            entityRole = await this.roleManager.FindByNameAsync(entityRole.Name);

            foreach (string claim in claims.Distinct())
            {
                result = await this.roleManager.AddClaimAsync(entityRole, new Claim(CustomClaimTypes.Permission, ApplicationPermissions.GetPermissionByValue(claim)));

                if (!result.Succeeded)
                {
                    await this.DeleteRoleAsync(role);

                    return(Tuple.Create(false, result.Errors.Select(e => e.Description).ToArray()));
                }
            }

            return(Tuple.Create(true, new string[] { }));
        }
Пример #8
0
        public async Task <ApiResponse> GetRoles([FromQuery] int pageSize = 10, [FromQuery] int pageNumber = 0)
        {
            var roleDtoList = new List <RoleDto>();
            List <IdentityRole <Guid> > listResponse;

            // get paginated list of roles
            try
            {
                var roleList = _roleManager.Roles.AsQueryable();
                listResponse = roleList.OrderBy(x => x.Id).Skip(pageNumber * pageSize).Take(pageSize).ToList();
            }
            catch (Exception ex)
            {
                throw new Exception(null, ex);
            }

            try
            {
                foreach (var role in listResponse)
                {
                    var claims = await _roleManager.GetClaimsAsync(role);

                    var permissions = claims.Where(x => x.Type == "permission").Select(x => ApplicationPermissions.GetPermissionByValue(x.Value).Name).ToList();

                    roleDtoList.Add(new RoleDto
                    {
                        Name        = role.Name,
                        Permissions = permissions
                    });;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(null, ex);
            }

            return(new ApiResponse(Status200OK, "Roles list fetched", roleDtoList));
        }
Пример #9
0
        public AutoMapperProfile()
        {
            CreateMap <ApplicationUser, UserViewModel> ()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserViewModel, ApplicationUser> ()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserEditViewModel> ()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserEditViewModel, ApplicationUser> ()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserPatchViewModel> ()
            .ReverseMap();

            CreateMap <ApplicationRole, RoleViewModel> ()
            .ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims))
            .ForMember(d => d.UsersCount, map => map.MapFrom((s, d) => s.Users?.Count ?? 0))
            //.ForMember (d => d.UsersCount, map => map.ResolveUsing (s => s.Users?.Count ?? 0))
            .ReverseMap();
            CreateMap <RoleViewModel, ApplicationRole> ();

            CreateMap <IdentityRoleClaim <string>, ClaimViewModel> ()
            .ForMember(d => d.Type, map => map.MapFrom(s => s.ClaimType))
            .ForMember(d => d.Value, map => map.MapFrom(s => s.ClaimValue))
            .ReverseMap();

            CreateMap <ApplicationPermission, PermissionViewModel> ()
            .ReverseMap();

            CreateMap <IdentityRoleClaim <string>, PermissionViewModel> ()
            .ConvertUsing(s => Mapper.Map <PermissionViewModel> (ApplicationPermissions.GetPermissionByValue(s.ClaimValue)));

            CreateMap <Customer, CustomerViewModel> ()
            .ReverseMap();

            CreateMap <Product, ProductViewModel> ()
            .ReverseMap();

            CreateMap <Order, OrderViewModel> ()
            .ReverseMap();

            CreateMap <Pays, PaysViewModel> ()
            .ForMember(d => d.Villes, map => map.Ignore())
            .ReverseMap();

            CreateMap <Villes, VillesViewModel> ()

            .ReverseMap();

            CreateMap <Devises, DevisesViewModel> ()

            .ReverseMap();

            CreateMap <Secteurs, SecteursViewModel> ()

            .ReverseMap();

            CreateMap <Fournisseurs, EditFournisseurViewModel> ()

            .ReverseMap();

            CreateMap <Fournisseurs, EditFournisseursViewModel> ()
            .ForMember(f => f.Contract, map => map.Ignore());

            CreateMap <Fournisseurs, FournisseursViewModel> ()
            .ForMember(f => f.Secteurs, map => map.Ignore())

            .ReverseMap();
            CreateMap <Entreprise, EntrepriseViewModel> ()

            .ReverseMap();
            CreateMap <Entreprise, EditEntrepriseViewModel>()

            .ReverseMap();

            CreateMap <Departements, DepartementsViewModel>()

            .ReverseMap();


            CreateMap <Agences, AgencesViewModel>()

            .ReverseMap();

            CreateMap <Services, ServicesViewModel>()

            .ReverseMap();

            CreateMap <ProductCategory, CategoriesViewModel>()

            .ReverseMap();


            CreateMap <Product, ProductViewModel>()

            .ReverseMap();

            CreateMap <EntrepriseUserInfos, EntrepriseUserInfosViewModel>()

            .ReverseMap();

            CreateMap <ApprobationLevel, ApprobationLevelViewModel>()

            .ReverseMap();

            CreateMap <Demandes, DemandesViewModel>()

            .ReverseMap();


            CreateMap <ApprobationWorkflow, ApprobationWorkflowViewModel>()

            .ReverseMap();

            CreateMap <Process, ProcessViewModel>()

            .ReverseMap();

            CreateMap <Group, GroupViewModel>()

            .ReverseMap();

            CreateMap <Etat, EtatViewModel>()

            .ReverseMap();

            CreateMap <Actions, ActionsViewModel>()

            .ReverseMap();

            CreateMap <Activite, ActiviteViewModel>()

            .ReverseMap();

            CreateMap <Transition, TransitionActions>()

            .ReverseMap();

            CreateMap <ActiviteTarget, ActiviteTargetViewModel>()

            .ReverseMap();

            CreateMap <ActionTarget, ActionTargetViewModel>()

            .ReverseMap();


            CreateMap <ActionsHistories, ActionsHistoriesViewModel>()

            .ReverseMap();

            CreateMap <TransitionActions, TransitionActionsViewModel>()

            .ReverseMap();
            CreateMap <TypeComptes, TypeComptesViewModel>()

            .ReverseMap();
            CreateMap <ComptesInternes, ComptesInternesViewModel>()

            .ReverseMap();

            CreateMap <Factures, FacturesViewModel>()

            .ReverseMap();

            CreateMap <Reglements, ReglementsViewModel>()

            .ReverseMap();

            CreateMap <BonDeCommande, BonDeCommandeViewModel>()

            .ReverseMap();

            CreateMap <BonLivraison, BonLivraisonViewModel>()

            .ReverseMap();
        }
Пример #10
0
        public AutoMapperProfile()
        {
            CreateMap <ApplicationUser, UserViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <UserViewModel, ApplicationUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <TraisiUser, UserViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <UserViewModel, TraisiUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <UserViewModel, SurveyUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserEditViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <UserEditViewModel, ApplicationUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserPatchViewModel>()
            .ReverseMap();

            CreateMap <ApplicationRole, RoleViewModel>()
            .ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims))
            .ForMember(d => d.UsersCount, map => map.ResolveUsing(s => s.Users?.Count ?? 0))
            .ReverseMap();
            CreateMap <RoleViewModel, ApplicationRole>();

            CreateMap <IdentityRoleClaim <string>, ClaimViewModel>()
            .ForMember(d => d.Type, map => map.MapFrom(s => s.ClaimType))
            .ForMember(d => d.Value, map => map.MapFrom(s => s.ClaimValue))
            .ReverseMap();

            CreateMap <ApplicationPermission, PermissionViewModel>()
            .ReverseMap();

            CreateMap <IdentityRoleClaim <string>, PermissionViewModel>()
            .ConvertUsing(s =>
                          Mapper.Map <PermissionViewModel>(ApplicationPermissions.GetPermissionByValue(s.ClaimValue)));

            CreateMap <Survey, SurveyViewModel>()
            .ReverseMap();

            CreateMap <GroupMember, GroupMemberViewModel>();

            CreateMap <GroupMemberViewModel, GroupMember>()
            .ForMember(d => d.User, map => map.Ignore())
            .ForMember(d => d.UserGroup, map => map.Ignore());

            CreateMap <UserGroup, UserGroupViewModel>()
            .ReverseMap();

            CreateMap <SurveyPermission, SurveyPermissionViewModel>()
            .ReverseMap();

            CreateMap <ApiKeys, ApiKeysViewModel>()
            .ForMember(a => a.GroupId, map => map.MapFrom(s => s.Group.Id))
            .ReverseMap();

            CreateMap <EmailTemplate, EmailTemplateViewModel>()
            .ForMember(a => a.GroupName, map => map.MapFrom(s => s.Group.Name))
            .ReverseMap();

            CreateMap <CodeGeneration, CodeGenerationViewModel>()
            .ReverseMap();

            CreateMap <GroupCodeViewModel, Groupcode>()
            .ForMember(gc => gc.Survey, map => map.Ignore());

            CreateMap <Groupcode, GroupCodeViewModel>()
            .ForMember(gc => gc.SurveyId, map => map.MapFrom(s => s.Survey.Id));

            CreateMap <ShortcodeViewModel, Shortcode>()
            .ForMember(sc => sc.Groupcode, map => map.Ignore())
            .ForMember(sc => sc.Survey, map => map.Ignore());
            //.ForMember (sc => sc.Respondent, map => map.Ignore());

            CreateMap <Shortcode, ShortcodeViewModel>()
            .ForMember(sc => sc.SurveyId, map => map.MapFrom(s => s.Survey.Id));
            //.ForMember(sc => sc.Respondent, map => map.MapFrom(r => r.Respondent.Id));

            CreateMap <QuestionPartView, QuestionPartViewViewModel>()
            .AfterMap((s, svm, opt) =>
            {
                svm.Label = s.Labels.FirstOrDefault(l => l.Language == (string)opt.Items["Language"]).Value;
            });

            CreateMap <SBQuestionPartViewViewModel, QuestionPartView>()
            .ForMember(m => m.SurveyView, map => map.Ignore())
            .ForMember(m => m.RepeatSource, map => map.Ignore());

            CreateMap <SBQuestionPartViewModel, QuestionPart>()
            .ForMember(m => m.QuestionConfigurations, map => map.Ignore())
            .ForMember(m => m.QuestionOptions, map => map.Ignore())
            .ReverseMap();

            CreateMap <QuestionPartView, SBQuestionPartViewViewModel>()
            .ForMember(m => m.ParentViewId, map => map.MapFrom(s => s.ParentView.Id))
            .ForMember(m => m.repeatSourceQuestionName, map => map.ResolveUsing(s =>
            {
                if (s.RepeatSource != null)
                {
                    return($"question~{s.RepeatSource.QuestionType}~{s.RepeatSource.Id}");
                }
                else
                {
                    return(null);
                }
            }))
            .AfterMap((s, svm, opt) =>
            {
                svm.Label = Mapper.Map <QuestionPartViewLabelViewModel>(
                    s.Labels.FirstOrDefault(l => l.Language == (string)opt.Items["Language"]));
                svm.QuestionPartViewChildren = svm.QuestionPartViewChildren?.OrderBy(c => c.Order).ToList();
            });

            CreateMap <QuestionConfiguration, QuestionConfigurationValueViewModel>()
            .ReverseMap();

            CreateMap <QuestionOptionLabel, QuestionOptionLabelViewModel>()
            .ReverseMap();

            CreateMap <QuestionOption, QuestionOptionValueViewModel>()
            .AfterMap((s, svm, opt) =>
            {
                svm.OptionLabel = Mapper.Map <QuestionOptionLabelViewModel>(s.QuestionOptionLabels.First(l => l.Language == (string)opt.Items["Language"]));
            });

            CreateMap <QuestionConditional, QuestionConditionalViewModel>()
            .ReverseMap().ForMember(c => c.SourceQuestion, map => map.Ignore()).ForMember(c => c.TargetQuestion, map => map.Ignore());
            CreateMap <QuestionOptionConditional, QuestionOptionConditionalViewModel>().ReverseMap();

            CreateMap <SBSurveyViewViewModel, SurveyView>()
            .ForMember(m => m.TermsAndConditionsLabels, map => map.Ignore())
            .ForMember(m => m.ThankYouPageLabels, map => map.Ignore())
            .ForMember(m => m.WelcomePageLabels, map => map.Ignore());

            CreateMap <QuestionPartView, SBPageStructureViewModel>()
            .AfterMap((s, svm, opt) =>
            {
                var language = (string)opt.Items["Language"];
                if (s.QuestionPart == null)
                {
                    svm.Label    = s.Labels.FirstOrDefault(l => l.Language == language).Value;
                    svm.Type     = "part";
                    svm.Children = s.QuestionPartViewChildren.OrderBy(q => q.Order).Select(q => q.ToLocalizedModel <SBPageStructureViewModel>(language)).ToList();
                }
                else
                {
                    svm.Id       = s.QuestionPart.Id.ToString();
                    svm.Label    = s.QuestionPart.Name;
                    svm.Type     = "question~" + s.QuestionPart.QuestionType;
                    svm.Children = s.QuestionPart.QuestionOptions.Count <= 200 ? s.QuestionPart.QuestionOptions.OrderBy(o => o.Name).ThenBy(o => o.Order).Select(q => q.ToLocalizedModel <SBPageStructureViewModel>(language)).ToList() : null;
                }
            });

            CreateMap <QuestionOption, SBPageStructureViewModel>()
            .ForMember(o => o.Children, map => map.Ignore())
            .AfterMap((s, svm, opt) =>
            {
                svm.Id    = s.Id.ToString();
                svm.Type  = "option~" + s.Name;
                svm.Label = s.QuestionOptionLabels.FirstOrDefault(l => l.Language == (string)opt.Items["Language"]).Value;
            });

            CreateMap <SurveyView, SBSurveyViewViewModel>()
            .ForMember(vm => vm.SurveyId, map => map.MapFrom(m => m.Survey.Id))
            .ForMember(vm => vm.Pages, map => map.MapFrom(m => m.QuestionPartViews))
            .AfterMap((s, svm, opt) =>
            {
                svm.SurveyCompletionPage = Mapper.Map <ThankYouPageLabelViewModel>(
                    s.ThankYouPageLabels.FirstOrDefault(l => l.Language == (string)opt.Items["Language"]));
                svm.TermsAndConditionsPage = Mapper.Map <TermsAndConditionsPageLabelViewModel>(
                    s.TermsAndConditionsLabels.FirstOrDefault(l =>
                                                              l.Language == (string)opt.Items["Language"]));
                svm.WelcomePage = Mapper.Map <WelcomePageLabelViewModel>(
                    s.WelcomePageLabels.FirstOrDefault(l => l.Language == (string)opt.Items["Language"]));
                svm.ScreeningQuestions = Mapper.Map <ScreeningQuestionsLabelViewModel>(
                    s.ScreeningQuestionLabels.FirstOrDefault(l => l.Language == (string)opt.Items["Language"]));
            });

            CreateMap <SBOrderViewModel, QuestionPartView>()
            .ForMember(o => o.Labels, map => map.Ignore())
            .ForMember(o => o.ParentView, map => map.Ignore())
            .ForMember(o => o.QuestionPart, map => map.Ignore())
            .ForMember(o => o.SurveyView, map => map.Ignore())
            .ForMember(o => o.QuestionPartViewChildren, map => map.Ignore());

            CreateMap <SBOrderViewModel, QuestionOption>()
            .ForMember(o => o.Name, map => map.Ignore())
            .ForMember(o => o.QuestionOptionLabels, map => map.Ignore());

            CreateMap <QuestionPartViewLabelViewModel, QuestionPartViewLabel>()
            .ForMember(w => w.QuestionPartView, map => map.Ignore())
            .ReverseMap();

            CreateMap <WelcomePageLabelViewModel, WelcomePageLabel>()
            .ForMember(w => w.SurveyView, map => map.Ignore())
            .ReverseMap();

            CreateMap <ThankYouPageLabelViewModel, ThankYouPageLabel>()
            .ForMember(w => w.SurveyView, map => map.Ignore())
            .ReverseMap();

            CreateMap <TermsAndConditionsPageLabelViewModel, TermsAndConditionsPageLabel>()
            .ForMember(w => w.SurveyView, map => map.Ignore())
            .ReverseMap();

            CreateMap <ScreeningQuestionsLabelViewModel, ScreeningQuestionsPageLabel>()
            .ForMember(w => w.SurveyView, map => map.Ignore())
            .ReverseMap();

            CreateMap <LabelViewModel, Label>()
            .ReverseMap();

            CreateMap <SiteSurveyTemplate, SiteSurveyTemplateViewModel>()
            .ReverseMap();

            CreateMap <QuestionTypeDefinition, SBQuestionTypeDefinitionViewModel>()
            .ForMember(q => q.ResponseType, map => map.ResolveUsing(s => s.ResponseType.ToString()))
            .ReverseMap();

            CreateMap <QuestionConfigurationDefinition, QuestionConfigurationDefinitionViewModel>()
            .ForMember(q => q.ResourceData, map => map.ResolveUsing(s =>
            {
                return((s.SharedResource == null)
                                                                        ? ((s.ResourceData == null) ? (null) : (System.Text.Encoding.UTF8.GetString(s.ResourceData)))
                                                                        : System.Text.Encoding.UTF8.GetString(QuestionTypeManager.SharedQuestionResources[s.SharedResource].Data));
            }))
            .ReverseMap();

            CreateMap <QuestionOptionDefinition, QuestionOptionDefinitionViewModel>()
            .ReverseMap();

            CreateSurveyViewerAutoMapperProfiles();

            CreateSurveyResponderAutoMapperProfiles();
        }
        /// <summary>
        /// Add permissions to role
        /// </summary>
        /// <param name="role"></param>
        /// <param name="permissions"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public async Task AddPermissionsToRole(ApplicationRole role, List <ApplicationPermission> permissions)
        {
            var claims = permissions.Select(x => new Claim(CustomClaimTypes.Permission, ApplicationPermissions.GetPermissionByValue(x.Value))).ToList();

            foreach (var claim in claims)
            {
                var results = await _roleManager.AddClaimAsync(role, claim);

                if (!results.Succeeded)
                {
                    throw new Exception($"Unable to add claim {claim.Value}");
                }
            }
        }
        /// <summary>
        /// Get permissions for role
        /// </summary>
        /// <param name="role"></param>
        /// <returns></returns>
        public async Task <List <ApplicationPermission> > GetPermissionsForRole(ApplicationRole role)
        {
            var claims = await _roleManager.GetClaimsAsync(role);

            return(claims.Select(x => ApplicationPermissions.GetPermissionByValue(x.Value)).ToList());
        }
Пример #13
0
        public async Task <ApiResponse> GetRoleAsync(string roleName)
        {
            RoleDto             roleDto;
            IdentityRole <Guid> identityRole;

            // get paginated list of users
            try
            {
                identityRole = await _roleManager.FindByNameAsync(roleName);
            }
            catch (Exception ex)
            {
                throw new Exception(null, ex);
            }

            try
            {
                var claims = await _roleManager.GetClaimsAsync(identityRole);

                var permissions = claims.Where(x => x.Type == "permission").Select(x => ApplicationPermissions.GetPermissionByValue(x.Value).Name).ToList();

                roleDto = new RoleDto
                {
                    Name        = roleName,
                    Permissions = permissions
                };
            }
            catch (Exception ex)
            {
                throw new Exception(null, ex);
            }

            return(new ApiResponse(Status200OK, "Role fetched", roleDto));
        }
Пример #14
0
        private async Task EnsureRoleAsync(string roleName, string description, string[] claims)
        {
            if ((await _roleManager.FindByNameAsync(roleName)) == null)
            {
                if (claims == null)
                {
                    claims = new string[] { }
                }
                ;

                string[] invalidClaims = claims.Where(c => ApplicationPermissions.GetPermissionByValue(c) == null).ToArray();
                if (invalidClaims.Any())
                {
                    throw new Exception("The following claim types are invalid: " + string.Join(", ", invalidClaims));
                }

                IdentityRole <Guid> applicationRole = new IdentityRole <Guid>(roleName);

                var result = await _roleManager.CreateAsync(applicationRole);

                IdentityRole <Guid> role = await _roleManager.FindByNameAsync(applicationRole.Name);

                foreach (string claim in claims.Distinct())
                {
                    result = await _roleManager.AddClaimAsync(role, new Claim(ClaimConstants.Permission, ApplicationPermissions.GetPermissionByValue(claim)));

                    if (!result.Succeeded)
                    {
                        await _roleManager.DeleteAsync(role);
                    }
                }
            }
        }
Пример #15
0
        public AutoMapperProfile()
        {
            CreateMap <ApplicationUser, UserViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserViewModel, ApplicationUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserEditViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserEditViewModel, ApplicationUser>()
            .ForMember(d => d.Roles, map => map.Ignore());

            CreateMap <ApplicationUser, UserPatchViewModel>()
            .ReverseMap();

            CreateMap <ApplicationRole, RoleViewModel>()
            .ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims))
            .ForMember(d => d.UsersCount, map => map.MapFrom(s => s.Users != null ? s.Users.Count : 0))
            .ReverseMap();
            CreateMap <RoleViewModel, ApplicationRole>();

            CreateMap <IdentityRoleClaim <string>, ClaimViewModel>()
            .ForMember(d => d.Type, map => map.MapFrom(s => s.ClaimType))
            .ForMember(d => d.Value, map => map.MapFrom(s => s.ClaimValue))
            .ReverseMap();

            CreateMap <ApplicationPermission, PermissionViewModel>()
            .ReverseMap();

            CreateMap <IdentityRoleClaim <string>, PermissionViewModel>()
            .ConvertUsing(s => Mapper.Map <PermissionViewModel>(ApplicationPermissions.GetPermissionByValue(s.ClaimValue)));

            CreateMap <Attendance, AttendanceViewModel>()
            .ReverseMap();

            CreateMap <AttendanceViewModel, Attendance>();

            CreateMap <Attendance, AttendanceCreateViewModel>()
            .ReverseMap();

            CreateMap <AttendanceCreateViewModel, Attendance>()
            .ReverseMap();

            CreateMap <PublicHoliday, PublicHolidayViewModel>()
            .ReverseMap();

            CreateMap <PublicHolidayViewModel, PublicHoliday>()
            .ReverseMap();

            CreateMap <PublicHoliday, PublicHolidayWithEventViewModel>()
            .ReverseMap();

            CreateMap <PublicHolidayWithEventViewModel, PublicHoliday>()
            .ReverseMap();

            CreateMap <Department, DepartmentViewModel>()
            .ReverseMap();

            CreateMap <DepartmentViewModel, Department>()
            .ReverseMap();

            CreateMap <CompanyBasicInfo, CompanyBasicInfoViewModel>()
            .ReverseMap();

            CreateMap <CompanyBasicInfoViewModel, CompanyBasicInfo>()
            .ReverseMap();

            CreateMap <ApplicationUser, ApplicationUserViewModel>()
            .ReverseMap();

            CreateMap <ApplicationUserViewModel, ApplicationUser>()
            .ReverseMap();

            CreateMap <TMSsite, TMSsiteViewModel>()
            .ReverseMap();

            CreateMap <TMSsiteViewModel, TMSsite>()
            .ReverseMap();

            CreateMap <TMSJobSite, TMSJobSiteViewModel>()
            .ReverseMap();

            CreateMap <TMSJobSiteViewModel, TMSJobSite>()
            .ReverseMap();

            CreateMap <JobSiteViewModel, TMSJobSite>()
            .ReverseMap();

            CreateMap <TMSJobSite, JobSiteViewModel>()
            .ReverseMap();

            CreateMap <JobSiteUpdateModel, TMSJobSite>()
            .ReverseMap();

            CreateMap <TMSJobSite, JobSiteUpdateModel>()
            .ReverseMap();


            CreateMap <TMSResignReason, TMSResignReasonViewModel>()
            .ReverseMap();

            CreateMap <TMSResignReasonViewModel, TMSResignReason>()
            .ReverseMap();

            CreateMap <TMSAttendance, TMSAttendanceViewModel>()
            .ReverseMap();

            CreateMap <TMSAttendanceViewModel, TMSAttendance>()
            .ReverseMap();

            CreateMap <TMSAttendance, TMSAttendanceCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSAttendanceCreateViewModel, TMSAttendance>()
            .ReverseMap();

            CreateMap <TMSPublicHoliday, TMSPublicHolidayViewModel>()
            .ReverseMap();

            CreateMap <TMSPublicHolidayViewModel, TMSPublicHoliday>()
            .ReverseMap();

            CreateMap <TMSPublicHoliday, TMSPublicHolidayCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSPublicHolidayCreateViewModel, TMSPublicHoliday>()
            .ReverseMap();

            CreateMap <TMSRace, TMSRaceViewModel>()
            .ReverseMap();

            CreateMap <TMSRaceViewModel, TMSRace>()
            .ReverseMap();

            CreateMap <TMSRace, TMSRaceCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSRaceCreateViewModel, TMSRace>()
            .ReverseMap();

            CreateMap <TMSEmployee, TMSEmployeeViewModel>()
            .ReverseMap();

            CreateMap <TMSEmployeeViewModel, TMSEmployee>()
            .ReverseMap();

            CreateMap <TMSEmployee, TMSEmployeeCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSEmployeeCreateViewModel, TMSEmployee>()
            .ReverseMap();

            CreateMap <TMSOtCode, TMSOtCodeViewModel>()
            .ReverseMap();

            CreateMap <TMSOtCodeViewModel, TMSOtCode>()
            .ReverseMap();

            CreateMap <TMSOtCode, TMSOtCodeGetIdViewModel>()
            .ReverseMap();

            CreateMap <TMSOtCodeGetIdViewModel, TMSOtCode>()
            .ReverseMap();

            CreateMap <TMSOtCode, TMSOtCodeCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSOtCodeCreateViewModel, TMSOtCode>()
            .ReverseMap();

            CreateMap <TMSAllowance, TMSAllowanceViewModel>()
            .ReverseMap();

            CreateMap <TMSAllowanceViewModel, TMSAllowance>()
            .ReverseMap();

            CreateMap <TMSOtSetting, TMSOtSettingCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSOtSettingCreateViewModel, TMSOtSetting>()
            .ReverseMap();

            CreateMap <TMSOtSetting, TMSOtSettingViewModel>()
            .ReverseMap();

            CreateMap <TMSOtSettingViewModel, TMSOtSetting>()
            .ReverseMap();

            CreateMap <TMSOtSetting, TMSOtSettingGetIdViewModel>()
            .ReverseMap();

            CreateMap <TMSOtSettingGetIdViewModel, TMSOtSetting>()
            .ReverseMap();

            CreateMap <TMSAllowanceJobsite, TMSAllowanceJobsiteViewModel>()
            .ReverseMap();

            CreateMap <TMSAllowanceJobsiteViewModel, TMSAllowanceJobsite>()
            .ReverseMap();

            CreateMap <TMSAllowanceJobsite, TMSAllowanceJobsiteCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSAllowanceJobsiteCreateViewModel, TMSAllowanceJobsite>()
            .ReverseMap();

            CreateMap <TMSShift, TMSShiftViewModel>()
            .ReverseMap();

            CreateMap <TMSShift, TMSShiftViewModelV2>()
            .ReverseMap();

            CreateMap <TMSShiftViewModel, TMSShift>()
            .ReverseMap();

            CreateMap <TMSZoneLocation, TMSZoneLocationViewModel>()
            .ReverseMap();

            CreateMap <TMSZoneLocationViewModel, TMSZoneLocation>()
            .ReverseMap();

            CreateMap <TMSZoneLocation, TMSZoneLocationCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSZoneLocationCreateViewModel, TMSZoneLocation>()
            .ReverseMap();

            CreateMap <TMSOtMaxTimeCreateViewModel, TMSOtMaxTime>()
            .ReverseMap();

            CreateMap <TMSOtMaxTimeViewModel, TMSOtMaxTime>()
            .ReverseMap();

            CreateMap <TMSOtMaxTime, TMSOtMaxTimeViewModel>()
            .ReverseMap();

            CreateMap <TMSLevel, TMSLevelViewModel>()
            .ReverseMap();

            CreateMap <TMSLevelViewModel, TMSLevel>()
            .ReverseMap();

            CreateMap <TMSLevel, TMSLevelCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSLevelCreateViewModel, TMSLevel>()
            .ReverseMap();

            CreateMap <TMSArea, TMSAreaViewModel>()
            .ReverseMap();

            CreateMap <TMSAreaViewModel, TMSArea>()
            .ReverseMap();

            CreateMap <TMSArea, TMSAreaCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSAreaCreateViewModel, TMSArea>()
            .ReverseMap();

            CreateMap <TMSLocation, TMSLocationViewModel>()
            .ReverseMap();

            CreateMap <TMSLocationViewModel, TMSLocation>()
            .ReverseMap();

            CreateMap <TMSLocation, TMSLocationCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSLocationCreateViewModel, TMSLocation>()
            .ReverseMap();

            CreateMap <TMSLocation, TMSLocationGetIdViewModel>()
            .ReverseMap();

            CreateMap <TMSZone, TMSZoneViewModel>()
            .ReverseMap();

            CreateMap <TMSZoneViewModel, TMSZone>()
            .ReverseMap();

            CreateMap <TMSZone, TMSZoneCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSZoneCreateViewModel, TMSZone>()
            .ReverseMap();

            CreateMap <TMSZone, TMSZoneListViewModel>()
            .ReverseMap();

            CreateMap <TMSZoneListViewModel, TMSZone>()
            .ReverseMap();

            CreateMap <TMSShiftJobSite, TMSShiftJobSiteViewModel>()
            .ReverseMap();

            CreateMap <TMSShiftJobSiteViewModel, TMSShiftJobSite>()
            .ReverseMap();

            CreateMap <TMSShiftJobSiteCreateViewModel, TMSShiftJobSite>()
            .ReverseMap();

            CreateMap <TMSEmployeeLogTime, TMSEmployeeLogTimeViewModel>()
            .ReverseMap();

            CreateMap <TMSEmployeeLogTimeViewModel, TMSEmployeeLogTime>()
            .ReverseMap();


            CreateMap <TMSEventPromotion, TMSEventPromotionViewModel>()
            .ReverseMap();

            CreateMap <TMSEventPromotionViewModel, TMSEventPromotion>()
            .ReverseMap();

            CreateMap <TMSEventPromotion, TMSEventPromotionCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSEventPromotionCreateViewModel, TMSEventPromotion>()
            .ReverseMap();


            CreateMap <TMSEventTerminationResign, TMSEventTerminationResignViewModel>()
            .ReverseMap();

            CreateMap <TMSEventTerminationResignViewModel, TMSEventTerminationResign>()
            .ReverseMap();

            CreateMap <TMSEventTerminationResign, TMSEventCreateTRViewModel>()
            .ReverseMap();

            CreateMap <TMSEventCreateTRViewModel, TMSEventTerminationResign>()
            .ReverseMap();


            CreateMap <TMSEventTransfer, TMSEventTransferViewModel>()
            .ReverseMap();

            CreateMap <TMSEventTransferViewModel, TMSEventTransfer>()
            .ReverseMap();

            CreateMap <TMSEventTransfer, TMSEventTransferCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSEventTransferCreateViewModel, TMSEventTransfer>()
            .ReverseMap();


            CreateMap <TMSEventContract, TMSEventContractViewModel>()
            .ReverseMap();

            CreateMap <TMSEventContractViewModel, TMSEventContract>()
            .ReverseMap();

            CreateMap <TMSEventContract, TMSEventContractCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSEventContractCreateViewModel, TMSEventContract>()
            .ReverseMap();

            CreateMap <TMSEventRejoin, TMSEventRejoinViewModel>()
            .ReverseMap();

            CreateMap <TMSEventRejoinViewModel, TMSEventRejoin>()
            .ReverseMap();

            CreateMap <TMSEventRejoin, TMSEventRejoinCreateViewModel>()
            .ReverseMap();

            CreateMap <TMSEventRejoinCreateViewModel, TMSEventRejoin>()
            .ReverseMap();

            CreateMap <TMSRosterViewModel, TMSRoster>()
            .ReverseMap();
        }
Пример #16
0
        public async Task <IdentityResult> UpdateRoleAsync(Role role, IEnumerable <string> claims)
        {
            claims = claims.ToArray();
            if (claims.Any())
            {
                string[] invalidClaims = claims.Where(c => ApplicationPermissions.GetPermissionByValue(c) == null).ToArray();
                if (invalidClaims.Any())
                {
                    return(IdentityResult.Failed(new IdentityError
                    {
                        Code = HttpStatusCode.NotFound.ToString(),
                        Description = "The following claim types are invalid: " + string.Join(", ", invalidClaims)
                    }));
                }
            }

            var result = await _roleManager.UpdateAsync(role);

            if (!result.Succeeded)
            {
                return(result);
            }

            var roleClaims = (await _roleManager.GetClaimsAsync(role))
                             .ToArray();

            if (claims.Any())
            {
                var roleClaimValues = roleClaims.Select(c => c.Value).ToArray();


                var claimsToRemove = roleClaimValues.Except(claims).ToArray();
                var claimsToAdd    = claims
                                     .Except(roleClaimValues)
                                     .Distinct()
                                     .ToArray();


                if (claimsToRemove.Any())
                {
                    foreach (string claim in claimsToRemove)
                    {
                        result = await _roleManager.RemoveClaimAsync(role, roleClaims.FirstOrDefault(c => c.Value == claim));

                        if (!result.Succeeded)
                        {
                            return(result);
                        }
                    }
                }


                if (claimsToAdd.Any())
                {
                    foreach (string claim in claimsToAdd)
                    {
                        result = await _roleManager.AddClaimAsync(role, new Claim(CustomClaimsTypes.Permission, ApplicationPermissions.GetPermissionByValue(claim)));

                        if (!result.Succeeded)
                        {
                            return(result);
                        }
                    }
                }
            }
            else
            {
                // Remove all Claims
                if (roleClaims.Any())
                {
                    foreach (var claim in roleClaims)
                    {
                        result = await _roleManager.RemoveClaimAsync(role, claim);

                        if (!result.Succeeded)
                        {
                            return(result);
                        }
                    }
                }
            }

            return(result);
        }
Пример #17
0
        public AutoMapperProfile()
        {
            CreateMap <AppUser, UserViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserViewModel, AppUser>()
            .ForMember(d => d.Roles, map => map.Ignore())
            .ForMember(d => d.Id, map => map.Condition(src => src.Id != null));

            CreateMap <AppUser, UserEditViewModel>()
            .ForMember(d => d.Roles, map => map.Ignore());
            CreateMap <UserEditViewModel, AppUser>()
            .ForMember(d => d.Roles, map => map.Ignore())
            .ForMember(d => d.Id, map => map.Condition(src => src.Id != null));

            CreateMap <AppUser, RegisterViewModel>().ReverseMap()
            .ForMember(d => d.Id, map => map.Condition(src => src.Id != null));
            CreateMap <AppUser, ProfileVM>().ReverseMap()
            .ForMember(d => d.Id, map => map.Condition(src => src.UserId != null));
            CreateMap <Customer, ProfileVM>().ReverseMap()
            .ForMember(d => d.Id, map => map.Condition(src => src.UserId != null));

            CreateMap <AppUser, LoginViewModel>().ReverseMap();
            CreateMap <AppUser, LoginVM>().ReverseMap();

            //CreateMap<AppUser, RegisterVM>().ReverseMap();
            //.ForMember(d => d.Id, map => map.Condition(src => src.Id != null));

            CreateMap <AppUser, UserDTO>().ReverseMap();

            CreateMap <AppUser, RegisterViewModel>()
            .ReverseMap()
            .ForMember(d => d.Id, map => map.Condition(src => src.Id != null));

            CreateMap <AppUser, UserPatchViewModel>()
            .ReverseMap();

            CreateMap <AppRole, RoleViewModel>()
            .ForMember(d => d.Permissions, map => map.MapFrom(s => s.Claims))
            .ForMember(d => d.UsersCount, map => map.MapFrom(s => s.Users != null ? s.Users.Count : 0))
            .ReverseMap();
            CreateMap <RoleViewModel, AppRole>()
            .ForMember(d => d.Id, map => map.Condition(src => src.Id != null));

            CreateMap <IdentityRoleClaim <string>, ClaimViewModel>()
            .ForMember(d => d.Type, map => map.MapFrom(s => s.ClaimType))
            .ForMember(d => d.Value, map => map.MapFrom(s => s.ClaimValue))
            .ReverseMap();

            CreateMap <ApplicationPermission, PermissionViewModel>()
            .ReverseMap();

            CreateMap <IdentityRoleClaim <string>, PermissionViewModel>()
            .ConvertUsing(s => (PermissionViewModel)ApplicationPermissions.GetPermissionByValue(s.ClaimValue));

            CreateMap <Customer, CustomerViewModel>().ReverseMap();
            CreateMap <Customer, Customer>().ReverseMap();
            CreateMap <Customer, ClientInfo>().ReverseMap();

            CreateMap <Language, Language>().ReverseMap();

            CreateMap <Article, ArticleViewModel>().ReverseMap();
            CreateMap <Article, CartItem>().ReverseMap();
            CreateMap <CartVM, CartItem>().ReverseMap();

            CreateMap <Article, Article>().ReverseMap();

            CreateMap <Order, OrderViewModel>().ReverseMap();
        }