예제 #1
0
        public void AddServiceRepository(BaseReportFilter <ServiceRepositoryDto> model)
        {
            try
            {
                BRule.Assert(
                    model.ReportFilter.Code != null && model.ReportFilter.MethodName != null &&
                    model.ReportFilter.ServiceName != null && model.ReportFilter.Title != null,
                    RuleExceptionCodeCommon.AllParametersAreRequired.GetEnumDescription(),
                    (int)RuleExceptionCodeCommon.AllParametersAreRequired);

                var repo   = ServiceRepositoryService.GetServiceRepositories();
                var entity = new ServiceRepository
                {
                    Code        = model.ReportFilter.Code,
                    MethodName  = model.ReportFilter.MethodName,
                    ServiceName = model.ReportFilter.ServiceName,
                    Title       = model.ReportFilter.Title
                };
                ServiceRepositoryService.Save(entity);
            }
            catch (Exception ex)
            {
                Logger.ErrorException(ex.Message, ex);
                throw;
            }
        }
예제 #2
0
        public void InitializeRule()
        {
            BRule     Rule      = new BRule(PaymentType.PHY_PROD.ToString());
            Packaging packaging = new Packaging();

            Rule.RuleActionInstance += packaging.GeneratePackagingSlip;
            Rule.RuleActionInstance += packaging.CommissionToAgent;
            bRules.Add(Rule);
        }
예제 #3
0
        public AuthenticationResponse Login(string userName, string password, string clientId, string clientPassword, string identityServerAddress)
        {
            try
            {
                var client = new TokenClient(
                    identityServerAddress,
                    clientId,
                    clientPassword);

                var token =
                    client.RequestResourceOwnerPasswordAsync(userName, password,
                                                             "email profile openid iranMarketerMail").Result;
                var application = clientId.ParseEnum(Applications.UnKnown);

                IdentityModels.ApplicationUser user = null;
                Party party = null;

                if (!token.AccessToken.IsNullOrEmpty())
                {
                    user = AuthenticationManager.AuthenticationProvider.GetUserByName(userName);
                }

                var result = new AuthenticationResponse
                {
                    AccessToken     = token.AccessToken,
                    LifeTime        = (int)token.ExpiresIn,
                    ApplicationUser = user == null ? null : new ApplicationUserDTO
                    {
                        Email              = user?.Email,
                        Status             = user?.Status ?? 0,
                        IsCustomizedAccess = user.IsCustomizedAccess,
                        CreateDate         = user?.CreateDate ?? DateTime.MinValue,
                        // PhoneNumber = party?.,
                        UserName = user?.UserName,
                        IsAdmin  = user?.IsAdmin ?? false,

                        DisplayNameFa = party != null ? (!Regex.IsMatch(user.UserName, "^demo\\d$") ? party?.FullName : "علی احمدی") : user.DisplayName,
                        DisplayNameEn = party != null ? (!Regex.IsMatch(user.UserName, "^demo\\d$") ? party?.FullName : "Joan Smith") : user.DisplayName,
                    },
                    HasAccess = token.AccessToken != null,
                    ClientId  = clientId,
                    //   Pages = AccessService.GetAccessiblePagesByUsername(userName, application).Select(x => x.ToString()).ToList()
                };
                BRule.Assert(result.AccessToken != null, RuleExceptionCodeUserManagement.LoginFaild.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.LoginFaild);

                BRule.Assert(result.ApplicationUser.Status == (int)UserStatus.Active, RuleExceptionCodeUserManagement.UserIsNotActive.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.UserIsNotActive);

                return(result);
            }
            catch (Exception ex)
            {
                Logger.ErrorException(ex.Message, ex);
                throw;
            }
        }
예제 #4
0
        public void UpdatePartyBankAccount(PartyBankAccount model)
        {
            try
            {
                BRule.Assert(model.PartyId > 0,
                             RuleExceptionCodeParty.CustomerEntityIsNull.GetEnumDescription(),
                             (int)RuleExceptionCodeParty.CustomerEntityIsNull);


                BRule.Assert(model.BankId > 0,
                             RuleExceptionCodeBankDeposit.BankIdIsInvalid.GetEnumDescription(),
                             (int)RuleExceptionCodeBankDeposit.BankIdIsInvalid);
                var def = PartyBankAccountService.GetPartyDefaultBankAccount(model.PartyId);
                model.Created = model.Modified = DateTime.Now;
                var dbFactory = CoreContainer.Container.Resolve <IDbFactory>();
                using (var uow = dbFactory.Create <IUnitOfWork, ISession>(IsolationLevel.Serializable))
                {
                    try
                    {
                        if (model.IsDefault == true)
                        {
                            if (def.Id != model.Id)
                            {
                                def.IsDefault = false;
                                PartyBankAccountService.SaveOrUpdate(def, uow);
                            }
                            else
                            {
                                model.IsDefault = true;
                                model.Status    = (int)AccountStatus.Active;
                            }
                        }
                        else
                        {
                            if (def.Id == model.Id)
                            {
                                model.IsDefault = true;
                                model.Status    = (int)AccountStatus.Active;
                            }
                        }
                        PartyBankAccountService.SaveOrUpdate(model, uow);
                    }
                    catch (Exception e)
                    {
                        uow.Rollback();
                        throw;
                    }
                }
            }
            catch (Exception e)
            {
                Logger.ErrorException(e.Message, e);
                throw;
            }
        }
예제 #5
0
 public List <TestEntity> GetMoreThanGivenAge(int age)
 {
     try
     {
         BRule.Assert(age > 0, "Age is invalid");
         var result = Repository.GetMoreThanGivenAge(age);
         return(result);
     }
     catch (Exception ex)
     {
         _logger.ErrorException(ex.Message, ex);
         throw;
     }
 }
예제 #6
0
 public void SaveBasicPartyInformation(Domain.DTO.RetailParty party)
 {
     try
     {
         BRule.Assert(party != null, RuleExceptionCodeCommon.FilterIsNull.GetEnumDescription(), (int)RuleExceptionCodeCommon.FilterIsNull);
         var entity = ObjectMapper.BaseConverter.ConvertSourceToDest <Domain.DTO.RetailParty, RetailParty>(party);
         SaveOrUpdate(entity);
     }
     catch (Exception e)
     {
         Logger.ErrorException(e.Message, e);
         throw;
     }
 }
예제 #7
0
 public List <TestEntity> GetByFirstName(string firstName)
 {
     try
     {
         BRule.Assert(!string.IsNullOrEmpty(firstName), "Firstname is invalid");
         var result = Repository.GetByFirstName(firstName);
         return(result);
     }
     catch (Exception ex)
     {
         _logger.ErrorException(ex.Message, ex);
         throw;
     }
 }
예제 #8
0
 public List <TestEntity> GetAllUsersByGivenFirstNames(List <string> firstNames)
 {
     try
     {
         firstNames.ForEach(x => BRule.Assert(!string.IsNullOrEmpty(x), "Firstname is invalid"));
         var result = Repository.GetAllUsersByGivenFirstNames(firstNames);
         return(result);
     }
     catch (Exception ex)
     {
         _logger.ErrorException(ex.Message, ex);
         throw;
     }
 }
        public void AddServiceAccessByUserNameAndPage(string username, List <PageType> pageTypes, Applications applications)
        {
            try
            {
                BRule.Assert(!string.IsNullOrEmpty(username), RuleExceptionCodeUserManagement.InvalidUserName.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidUserName);

                Dao.AddServiceAccessByUserNameAndPage(username, pageTypes, applications);
            }
            catch (Exception ex)
            {
                Logger.ErrorException(ex.Message, ex);
                throw ex;
            }
        }
        public List <PageType> GetAccessiblePagesByUsername(string username, Applications application)
        {
            try
            {
                BRule.Assert(!string.IsNullOrEmpty(username), RuleExceptionCodeUserManagement.InvalidUserName.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidUserName);

                return(Dao.GetAccessiblePagesByUsername(username, application));
            }
            catch (Exception ex)
            {
                Logger.ErrorException(ex.Message, ex);
                throw ex;
            }
        }
        public void AddServiceAccessByRoleIdAndPage(string roleId, List <PageAllow> pageTypes, Applications applications)
        {
            try
            {
                BRule.Assert(!string.IsNullOrEmpty(roleId), RuleExceptionCodeUserManagement.InvalidRole.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidRole);

                Dao.AddServiceAccessByRoleIdAndPage(roleId, pageTypes, applications);
            }
            catch (Exception ex)
            {
                Logger.ErrorException(ex.Message, ex);
                throw ex;
            }
        }
예제 #12
0
        /// <summary>
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public Domain.DTO.UserManagement GetUserInformationByUserName(BaseReportFilter <UserManagementEditFilter> filter)
        {
            try
            {
                var username = filter.ReportFilter?.UserName;
                BRule.Assert(!username.IsNullOrEmpty(), RuleExceptionCodeUserManagement.UserNameIsEmpty.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.UserNameIsEmpty);

                var key = string.Format(pattern, username);

                var dtoCache = CustomCache.Get(key) as Domain.DTO.UserManagement;
                if (dtoCache != null)
                {
                    return(dtoCache);
                }

                //var user = AuthenticationManager.AuthenticationProvider.UserManager.FindByName(username); //TODO
                //Mapper.CreateMap<IdentityModels.ApplicationUser, Domain.DTO.UserManagement>().ForMember(dest => dest.CreateDate,
                //    opt => opt.MapFrom(src => src.CreateDate.ConvertMiladiToJalali()));
                //var model = Mapper.Map<IdentityModels.ApplicationUser, Domain.DTO.UserManagement>(user);

                var model = UserManagementService.GetUserByUserName(username);
                var party = PartyProvider.GetByUserName(username);
                if (party != null)
                {
                    var branch = PartyBranchService.GetAll().FirstOrDefault(x => x.PartyId == party.Id && x.ValidUntil == null);
                    if (branch?.BranchId != null)
                    {
                        if (branch?.BranchId != null)
                        {
                            model.BranchId = (int)branch?.BranchId;
                        }
                    }
                }

                model.RolesCodeList = AuthenticationManager.AuthenticationProvider.UserManager.GetRoles(model.Id).ToList();

                CustomCache.Insert(key, model, 1200);
                return(model);
            }
            catch (Exception ex)
            {
                Logger.ErrorException(ex.Message, ex);
                throw;
            }
        }
예제 #13
0
        //public List<ServiceAccessDto> GetAllServiceAccessByUserName(BaseReportFilter<ReportFilter> filter)
        //{
        //    try
        //    {
        //        var service = AccessService.GetServiceAccesses().Where(x => x.UserId != null && x.Allow = true);

        //        foreach (var serviceAccess in service)
        //        {


        //        }


        //        var result = service.Select(t =>
        //            {
        //                var serviceRep =
        //                    RepositoryService.GetServiceRepositories()
        //                        .FirstOrDefault(x => x.Id == t.ServiceRepositoryId);
        //                return new ServiceAccessDto
        //                {
        //                    Allow = t.Allow,
        //                    Id = t.Id,
        //                    UserName =
        //                        !t.UserId.IsNullOrEmpty()
        //                            ? AuthenticationManager.AuthenticationProvider.UserManager.FindByIdAsync(t.UserId)
        //                                .Result.UserName
        //                            : null,
        //                    LastUpdate = t.LastUpdate.ConvertMiladiToJalali(),
        //                    RoleName =
        //                        AuthenticationManager.AuthenticationProvider.RoleManager.FindByIdAsync(t.RoleId)
        //                            .Result?.Name,
        //                    ControllerName = serviceRep?.ServiceName,
        //                    MethodNameEn = serviceRep?.MethodName,
        //                    MethodNameFa = serviceRep?.Title,
        //                    Code = serviceRep?.Code,
        //                    ApplicationTitle = ((Applications)t.ApplicationId).ToString()
        //                };
        //            }
        //        );

        //        return result.ToList();
        //    }
        //    catch (Exception ex)
        //    {
        //        Logger.ErrorException(ex.Message, ex);
        //        throw;
        //    }
        //}

        //public void UpdateAccess(BaseReportFilter<ServiceAccessUpdateFilter> model)
        //{
        //    try
        //    {
        //        foreach (var access in model.ReportFilter.AccessDtos)
        //        {
        //            BRule.Assert(access.Allow != null && access.Id > 0,
        //                RuleExceptionCode.AllParametersAreRequired.GetEnumDescription(),
        //                (int)RuleExceptionCode.AllParametersAreRequired);

        //            AccessService.UpdateAccess(new ServiceAccess
        //            {
        //                Id = access.Id,
        //                Allow = access.Allow,
        //                LastUpdate = DateTime.Now
        //            });
        //        }

        //    }
        //    catch (Exception ex)
        //    {
        //        Logger.ErrorException(ex.Message, ex);
        //        throw ex;
        //    }
        //}


        public void AddServiceAccessByUserNameAndPage(BaseReportFilter <ServiceAccessAddFilter> filter)
        {
            try
            {
                BRule.Assert((bool)!filter?.ReportFilter?.UserNames?.FirstOrDefault().IsNullOrEmpty(),
                             RuleExceptionCodeCommon.AllParametersAreRequired.GetEnumDescription(),
                             (int)RuleExceptionCodeCommon.AllParametersAreRequired);


                ServiceAccessService.AddServiceAccessByUserNameAndPage(filter.ReportFilter.UserNames.FirstOrDefault(),
                                                                       null, Applications.IranMarketerFund);
            }
            catch (Exception e)
            {
                Logger.ErrorException(e.Message, e);
                throw;
            }
        }
예제 #14
0
        public void AddServiceAccessByRoleIdAndPage(BaseReportFilter <ServiceAccessAddFilter> filter)
        {
            try
            {
                BRule.Assert(filter?.ReportFilter?.ApplicationRole != null,
                             RuleExceptionCodeCommon.AllParametersAreRequired.GetEnumDescription(),
                             (int)RuleExceptionCodeCommon.AllParametersAreRequired);


                ServiceAccessService.AddServiceAccessByRoleIdAndPage(filter.ReportFilter.ApplicationRole.Id,
                                                                     filter.ReportFilter.PageTypes, Applications.IranMarketerFund);
            }
            catch (Exception e)
            {
                Logger.ErrorException(e.Message, e);
                throw;
            }
        }
예제 #15
0
        public void AddRoles(BaseReportFilter <AddRoleFilter> model)
        {
            try
            {
                BRule.Assert(model.ReportFilter.RoleName != null,
                             RuleExceptionCodeUserManagement.InvalidUserName.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidUserName);


                if (AuthenticationManager.AuthenticationProvider.RoleManager.FindByName(model.ReportFilter.RoleName) ==
                    null)
                {
                    AuthenticationManager.AuthenticationProvider.CreateRole(model.ReportFilter.RoleName);
                }
            }
            catch (Exception e)
            {
                Logger.ErrorException(e.Message, e);
                throw;
            }
        }
예제 #16
0
        public void UpdateUserInformation(BaseReportFilter <UserManagementUpdateFilter> filter)
        {
            try
            {
                BRule.Assert(filter?.ReportFilter != null, RuleExceptionCodeCommon.FilterIsNull.GetEnumDescription(),
                             (int)RuleExceptionCodeCommon.FilterIsNull);

                BRule.Assert(filter.ReportFilter.UserName != null,
                             RuleExceptionCodeUserManagement.InvalidUserName.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidUserName);

                BRule.Assert(filter.ReportFilter.DisplayName != null,
                             RuleExceptionCodeUserManagement.DisplayNameIsNull.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.DisplayNameIsNull);

                var user =
                    AuthenticationManager.AuthenticationProvider.UserManager.FindByName(filter.ReportFilter.UserName);


                BRule.Assert(user != null,
                             RuleExceptionCodeUserManagement.UserNotFound.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.UserNotFound);


                var ifExistEmail = AuthenticationManager.AuthenticationProvider.UserManager.FindByEmail(filter.ReportFilter.Email);


                BRule.Assert(ifExistEmail == null || ifExistEmail.UserName == user.UserName,
                             RuleExceptionCodeUserManagement.EmailExits.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.EmailExits);

                BRule.Assert(!filter.ReportFilter.PhoneNumber.IsNullOrEmpty(),
                             RuleExceptionCodeUserManagement.InvalidMoileNumber.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidMoileNumber);


                Mapper.CreateMap <UserManagementUpdateFilter, IdentityModels.ApplicationUser>()
                .ForMember(dest => dest.CreateDate,
                           opt => opt.MapFrom(src => DateTime.Now))
                .ForMember(dest => dest.Status, opt => opt.MapFrom(src => (int)src.Status))
                .ForMember(dest => dest.Id, opt => opt.Ignore())
                .ForMember(dest => dest.UserName, opt => opt.Ignore())
                .ForMember(dest => dest.PasswordHash,
                           opt =>
                           opt.Ignore());


                var result = Mapper.Map(filter.ReportFilter,
                                        user);

                AuthenticationManager.AuthenticationProvider.UserManager.Update(result);

                var currentRole = AuthenticationManager.AuthenticationProvider.UserManager.GetRoles(user.Id);

                if (currentRole != null)
                {
                    AuthenticationManager.AuthenticationProvider.UserManager.RemoveFromRoles(user.Id,
                                                                                             currentRole.ToArray());

                    if (filter.ReportFilter.RolesCodeList != null)
                    {
                        AuthenticationManager.AuthenticationProvider.UserManager.AddToRoles(user.Id,
                                                                                            filter.ReportFilter.RolesCodeList.ToArray());
                    }
                }
                else
                {
                    if (filter.ReportFilter.RolesCodeList != null)
                    {
                        AuthenticationManager.AuthenticationProvider.UserManager.AddToRoles(user.Id,
                                                                                            filter.ReportFilter.RolesCodeList.ToArray());
                    }
                }

                var party       = PartyProvider.GetByUserName(filter.ReportFilter.UserName);
                var partyBranch = PartyBranchService.GetAll().FirstOrDefault(x => x.PartyId == party.Id && x.ValidUntil == null);
                //TODO update branch
                //PartyProvider.GetByNationalId()

                var dbFactory = CoreContainer.Container.Resolve <IDbFactory>();
                using (var uow = dbFactory.Create <IUnitOfWork, ISession>(IsolationLevel.Serializable))
                {
                    try
                    {
                        partyBranch.ValidUntil = DateTime.Now;
                        partyBranch.ModifiedBy = filter.AuthenticatedUserName;
                        PartyBranchService.SaveOrUpdate(partyBranch, uow);
                    }
                    catch (Exception ex)
                    {
                        uow.Rollback();
                        throw;
                    }
                }
            }
            catch
            (Exception ex)
            {
                Logger.ErrorException(ex.Message, ex);
                throw;
            }
        }
예제 #17
0
        public void AddUser(UserManagementAddFilter model)
        {
            var addedUser = new IdentityModels.ApplicationUser();

            try
            {
                BRule.Assert(model != null, RuleExceptionCodeCommon.FilterIsNull.GetEnumDescription(),
                             (int)RuleExceptionCodeCommon.FilterIsNull);

                BRule.Assert(model.UserName != null,
                             RuleExceptionCodeUserManagement.InvalidUserName.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.InvalidUserName);

                BRule.Assert(model.DisplayName != null,
                             RuleExceptionCodeUserManagement.DisplayNameIsNull.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.DisplayNameIsNull);

                var user =
                    AuthenticationManager.AuthenticationProvider.UserManager.FindByName(model.UserName);

                BRule.Assert(user == null,
                             RuleExceptionCodeUserManagement.UserNameExists.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.UserNameExists);

                var ifExistEmail = AuthenticationManager.AuthenticationProvider.UserManager.FindByEmail(model.Email);

                BRule.Assert(ifExistEmail == null,
                             RuleExceptionCodeUserManagement.EmailExits.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.EmailExits);


                AuthenticationManager.AuthenticationProvider.UserManager.PasswordValidator = new PasswordValidator
                {
                    RequireDigit            = false,
                    RequireLowercase        = false,
                    RequireNonLetterOrDigit = false,
                    RequireUppercase        = false,
                    RequiredLength          = 5
                };
                BRule.Assert(model.Password.Equals(model.ConfirmPassword),
                             RuleExceptionCodeUserManagement.ConfirmPasswordDontMatch.GetEnumDescription(),
                             (int)RuleExceptionCodeUserManagement.ConfirmPasswordDontMatch);
                BRule.Assert(
                    AuthenticationManager.AuthenticationProvider.UserManager.PasswordValidator.ValidateAsync(
                        model.Password).Result.Succeeded,
                    RuleExceptionCodeUserManagement.PasswordisInvalid.GetEnumDescription(),
                    (int)RuleExceptionCodeUserManagement.PasswordisInvalid);

                Mapper.CreateMap <UserManagementAddFilter, IdentityModels.ApplicationUser>()
                .ForMember(dest => dest.CreateDate,
                           opt => opt.MapFrom(src => DateTime.Now))
                .ForMember(dest => dest.Id, opt => opt.Ignore())
                .ForMember(dest => dest.PasswordHash,
                           opt =>
                           opt.Ignore())
                .ForMember(x => x.EmailConfirmed, y => y.UseValue(true))
                .ForMember(x => x.PhoneNumberConfirmed, y => y.UseValue(true))
                .ForMember(x => x.Status, y => y.UseValue(1))
                .ForMember(x => x.LockoutEnabled, y => y.UseValue(false));
                var result = Mapper.Map <UserManagementAddFilter, IdentityModels.ApplicationUser>(model);

                result.LockoutEnabled = false;

                AuthenticationManager.AuthenticationProvider.UserManager.Create(result, model.Password);
                addedUser =
                    AuthenticationManager.AuthenticationProvider.UserManager.FindByName(model.UserName);
                var dbFactory = CoreContainer.Container.Resolve <IDbFactory>();
                using (var uow = dbFactory.Create <IUnitOfWork, ISession>(IsolationLevel.Serializable))
                {
                    try
                    {
                        switch (model.PartyType)
                        {
                        case PartyType.Retail:
                        {
                            PartyProvider.Save(new RetailParty()
                                {
                                    Created    = DateTime.Now,
                                    Modified   = DateTime.Now,
                                    CreatedBy  = model.AuthenticatedUserName,
                                    ModifiedBy = model.AuthenticatedUserName,
                                    FullName   = model.DisplayName,
                                    UserName   = addedUser.UserName,
                                    UserId     = addedUser.Id,
                                }, uow);
                            break;
                        }

                        case PartyType.Institutional:
                        {
                            LegalPartyProvider.Save(new LegalParty()
                                {
                                    Created     = DateTime.Now,
                                    Modified    = DateTime.Now,
                                    CreatedBy   = model.AuthenticatedUserName,
                                    ModifiedBy  = model.AuthenticatedUserName,
                                    UserName    = addedUser.UserName,
                                    UserId      = addedUser.Id,
                                    CompanyName = model.DisplayName
                                }, uow);

                            break;
                        }

                        default:
                            break;
                        }
                    }
                    catch (Exception)
                    {
                        uow.Rollback();
                    }
                }
            }
            catch (Exception ex)
            {
                AuthenticationManager.AuthenticationProvider.UserManager.Delete(addedUser);

                Logger.ErrorException(ex.Message, ex);
                throw ex;
            }
        }