示例#1
0
        protected static Expression <Func <TEntity, bool> > MapExpressionToEntity(Expression <Func <TDto, bool> > predicate)
        {
            var param  = Expression.Parameter(typeof(TEntity));
            var result = new CustomExpressionVisitor <TEntity>(param).Visit(predicate.Body);

            return(Expression.Lambda <Func <TEntity, bool> >(result, param));
        }
示例#2
0
        public IEnumerable <T> Select <T>(Expression <Func <T, bool> > expression) where T : BaseModel, new()
        {
            Type type = typeof(T);
            CustomExpressionVisitor visitor = new CustomExpressionVisitor();

            visitor.Visit(expression);
            string where = visitor.GetWhere();
            string sql = $"SELECT * FROM {type.GetMappingName()} WHERE {where}";

            return(this.ExecuteSql(sql, new SqlParameter[0], comm =>
            {
                List <T> list = new List <T>();
                var reader = comm.ExecuteReader();
                while (reader.Read())
                {
                    T t = new T();
                    foreach (var prop in type.GetProperties())
                    {
                        string propName = prop.GetMappingName();
                        prop.SetValue(t, reader[propName] is DBNull ? null : reader[propName]);
                    }
                    list.Add(t);
                }
                return list;
            }, SqlConnectionStringPool.DBOperateType.Read));
        }
示例#3
0
        public static Expression <Func <TTo, bool> > Convert <TFrom, TTo>(Expression <Func <TFrom, bool> > predicate)
        {
            var parameter = Expression.Parameter(typeof(TTo), predicate.Parameters[0].Name);
            var body = new CustomExpressionVisitor {
                source = predicate.Parameters[0], target = parameter
            }.Visit(predicate.Body);

            return(Expression.Lambda <Func <TTo, bool> >(body, parameter));
        }
示例#4
0
        public ServiceResult <IEnumerable <OrderAdminDto> > GetAllAdmin(Expression <Func <OrderAdminDto, bool> > predicate)
        {
            var param  = Expression.Parameter(typeof(Order));
            var result = new CustomExpressionVisitor <Order>(param).Visit(predicate.Body);
            var lambda = Expression.Lambda <Func <Order, bool> >(result, param);

            return(ServiceResult <IEnumerable <OrderAdminDto> >
                   .Success(_repository.Include(x => x.User).Where(lambda)
                            .Select(_mapper.Map <OrderAdminDto>)));
        }
示例#5
0
        public bool Delete <T>(Expression <Func <T, bool> > expression)
        {
            Type type = typeof(T);
            CustomExpressionVisitor visitor = new CustomExpressionVisitor();

            visitor.Visit(expression);
            string where = visitor.GetWhere();
            string sql = $"DELETE FROM {type.GetMappingName()} WHERE {where}";

            return(this.ExecuteSql(sql, new SqlParameter[0], comm => comm.ExecuteNonQuery() >= 1));
        }
示例#6
0
        public async Task <ServiceResult <IEnumerable <PriceTresholdAdminDto> > > GetAllAdminAsync(Expression <Func <PriceTresholdAdminDto, bool> > predicate)
        {
            var param  = Expression.Parameter(typeof(PriceTreshold));
            var result = new CustomExpressionVisitor <PriceTreshold>(param).Visit(predicate.Body);
            var lambda = Expression.Lambda <Func <PriceTreshold, bool> >(result, param);

            var count = Count();

            if (count.Result == 0)
            {
                _repository.Add(new PriceTreshold
                {
                    MinCharges     = 0,
                    PricePerCharge = 3
                });
                await _unitOfWork.CommitAsync();
            }

            return(ServiceResult <IEnumerable <PriceTresholdAdminDto> >
                   .Success((await _repository.Include(x => x.Orders).Where(lambda).ToListAsync()).Select(_mapper.Map <PriceTresholdAdminDto>)));
        }
示例#7
0
        public static void InsertUpdateDeleteTests()
        {
            var storage = DataStorage.Instance;

            var status = false;


            /***
             * TESTING NUMBERING PLAN
             */
            var numberingPlan = new NumberingPlansDataMapper();

            var athens = "athens";
            var kaz    = "kaz";

            var plan = new NumberingPlan();

            plan.City            = athens;
            plan.Iso3CountryCode = kaz;

            var ev = new CustomExpressionVisitor();

            Expression <Func <NumberingPlan, bool> > exp1 = item => item.City.ToLower() == athens;
            Expression <Func <NumberingPlan, bool> > exp2 = (item => item.Iso3CountryCode.ToLower() == kaz);

            var data1 = numberingPlan.Get(exp1).ToList();
            var data2 = numberingPlan.Get(exp2).ToList();


            /***
             * TESTING THE SINGLETON SITES DEPARTMENTS DATA MAPPER
             */
            var allSitesDepartments = storage.SitesDepartments.GetAll();


            var newSite = new Site
            {
                CountryCode = "GRC",
                Description = "Sample Description",
                Name        = "TEST-SITE"
            };

            var newDepartment = new Department
            {
                Name        = "TEST-DEPARTMENT",
                Description = "Sample Description"
            };

            newSite.Id       = storage.Sites.Insert(newSite);
            newDepartment.Id = storage.Departments.Insert(newDepartment);

            var newSiteDepartment = new SiteDepartment
            {
                SiteId       = newSite.Id,
                DepartmentId = newDepartment.Id
            };

            newSiteDepartment.Id = storage.SitesDepartments.Insert(newSiteDepartment);

            allSitesDepartments = storage.SitesDepartments.GetAll();

            newSiteDepartment.SiteId = 29;

            status = storage.SitesDepartments.Update(newSiteDepartment);

            newSiteDepartment = storage.SitesDepartments.GetById(newSiteDepartment.Id);

            allSitesDepartments = storage.SitesDepartments.GetAll();

            status = storage.SitesDepartments.Delete(newSiteDepartment);

            status = storage.Departments.Delete(newDepartment);

            status = storage.Sites.Delete(newSite);


            /***
             * TESTING USERS DATA MAPPER
             */
            var allUsers = storage.Users.GetAll();

            var newUser = new User
            {
                EmployeeId      = 99887766,
                SipAccount      = "*****@*****.**",
                FullName        = "UNKNOWN SAMPLE USER",
                DisplayName     = "UNKNOWN USER",
                SiteName        = "MOA",
                DepartmentName  = "ISD",
                NotifyUser      = "******",
                TelephoneNumber = "12334545667",
                UpdatedAt       = DateTime.MinValue,
                //UpdatedByAD = 1,
                CreatedAt = DateTime.Now
            };

            storage.Users.Insert(newUser);

            newUser = storage.Users.GetBySipAccount(newUser.SipAccount);

            newUser.DisplayName = "UNKNOWN";

            status = storage.Users.Update(newUser);
            status = storage.Users.Delete(newUser);


            /***
             * TESTING SYSTEM ROLES
             */
            var developerRole = storage.Roles.GetByRoleId(10);

            var systemRole = new SystemRole
            {
                Description = "TESTING SYSTEM ROLE",
                RoleId      = developerRole.RoleId,
                SipAccount  = "*****@*****.**",
                SiteId      = 29
            };

            systemRole.Id = storage.SystemRoles.Insert(systemRole);

            systemRole = storage.SystemRoles.GetById(systemRole.Id);

            systemRole.SiteId = 31;

            status = storage.SystemRoles.Update(systemRole);

            systemRole = storage.SystemRoles.GetById(systemRole.Id);

            status = storage.SystemRoles.Delete(systemRole);


            /***
             * TESTING SITES DEPARTMENTS DATA MAPPER
             */
            var moaSite       = storage.Sites.GetById(29);
            var rasoSite      = storage.Sites.GetById(31);
            var isdDepartment = storage.Departments.GetByName("ISD");

            var siteDepartment = new SiteDepartment
            {
                SiteId       = moaSite.Id,
                DepartmentId = isdDepartment.Id
            };

            siteDepartment.Id = storage.SitesDepartments.Insert(siteDepartment);

            siteDepartment = storage.SitesDepartments.GetById(siteDepartment.Id);

            siteDepartment.SiteId = rasoSite.Id;

            status = storage.SitesDepartments.Update(siteDepartment);

            siteDepartment = storage.SitesDepartments.GetById(siteDepartment.Id);

            status = storage.SitesDepartments.Delete(siteDepartment);


            /***
             * TESTING SITES DATA MAPPER
             */
            var site = new Site
            {
                CountryCode = "GRC",
                Description = "SAMPLE GREECE SITE",
                Name        = "SAMPLE SITE"
            };

            site.Id = storage.Sites.Insert(site);

            site = storage.Sites.GetById(site.Id);

            site.Name = "sample sample site";

            status = storage.Sites.Update(site);
            status = storage.Sites.Delete(site);


            /***
             * TESTING ROLES DATA MAPPER
             */
            var role123 = new Role
            {
                RoleDescription = "SAMPLE ROLE",
                RoleId          = 123123,
                RoleName        = "SAMPLE-01"
            };

            role123.Id = storage.Roles.Insert(role123);

            role123.RoleName = "sample-02.01";

            status = storage.Roles.Update(role123);
            status = storage.Roles.Delete(role123);


            /***
             * TESTING NGN RATES DATA MAPPER
             */
            var ngnRate = new RateForNgn
            {
                DialingCodeId = 1,
                Rate          = Convert.ToDecimal(15.45)
            };

            ngnRate.Id = 19; //_STORAGE.RatesForNGN.Insert(NGNRate, 10);

            ngnRate = storage.RatesForNgn.GetByGatewayId(10).Find(rate => rate.Id == 19);

            ngnRate.Rate = Convert.ToDecimal(20.45);

            status = storage.RatesForNgn.Update(ngnRate, 10);
            status = storage.RatesForNgn.Delete(ngnRate, 10);


            /***
             * TESTING POOLS DATA MAPPER
             */
            var newPool = new Pool
            {
                Fqdn = "TESTING POOL FQDN"
            };

            newPool.Id = storage.Pools.Insert(newPool);

            newPool.Fqdn = "CHANGED FQDN";

            status = storage.Pools.Update(newPool);
            status = storage.Pools.Delete(newPool);


            /***
             * TESTING PHONE CALLS EXCLUSIONS
             */
            var exclusion = new PhoneCallExclusion
            {
                ExclusionSubject = "*****@*****.**",
                Description      = "SAMPLE EXCLUSION TEST",
                ExclusionType    = Globals.PhoneCallExclusion.Type.Source.Value(),
                SiteId           = 29,
                ZeroCost         = Globals.PhoneCallExclusion.ZeroCost.No.Value(),
                AutoMark         = Globals.PhoneCallExclusion.AutoMark.Business.Value()
            };

            exclusion.Id = storage.PhoneCallsExclusions.Insert(exclusion);

            exclusion = storage.PhoneCallsExclusions.GetById(789);

            exclusion.AutoMark = "";
            exclusion.ZeroCost = Globals.PhoneCallExclusion.ZeroCost.Yes.Value();

            status = storage.PhoneCallsExclusions.Update(exclusion);
            status = storage.PhoneCallsExclusions.Delete(exclusion);


            /***
             * TESTING PHONE BOOK CONTACTS DATA MAPPER
             */
            var contact = new PhoneBookContact
            {
                DestinationCountry = "JOR",
                DestinationNumber  = "123123123123123123",
                Name       = "SAMPLE CONTACT",
                SipAccount = "*****@*****.**",
                Type       = "Personal"
            };

            contact.Id = storage.PhoneBooks.Insert(contact);

            var allContacts = storage.PhoneBooks.GetBySipAccount(contact.SipAccount);

            contact.Name = "SAMPLE PHONE BOOK CONTANCT NAME";
            contact.Type = "Business";

            status = storage.PhoneBooks.Update(contact);
            status = storage.PhoneBooks.Delete(contact);


            /***
             * TESTING NUMBERING PLAN FOR NGN
             */
            var ngn = new NumberingPlanForNgn
            {
                Description     = "TEST NGN",
                DialingCode     = "8000000000000",
                Iso3CountryCode = "GRC",
                TypeOfServiceId = 6,
                Provider        = "SAMPLE PROVIDER"
            };

            ngn.Id = storage.NumberingPlansForNgn.Insert(ngn);

            ngn = storage.NumberingPlansForNgn.GetById(ngn.Id);

            ngn.Description = "TEST NGN - UPDATED.";

            status = storage.NumberingPlansForNgn.Update(ngn);
            status = storage.NumberingPlansForNgn.Delete(ngn);


            /***
             * TESTING NUMBER PLAN DATA MAPPER
             */
            var numPlan = new NumberingPlan
            {
                City            = "Xin Che Bang",
                CountryName     = "ChinaYaNa",
                DialingPrefix   = 90909,
                Iso2CountryCode = "CY",
                Iso3CountryCode = "CYN",
                Provider        = string.Empty,
                TypeOfService   = "countrycode"
            };

            storage.NumberingPlans.Insert(numPlan);

            numPlan.CountryName = "ChynaYaNa";

            status = storage.NumberingPlans.Update(numPlan);
            status = storage.NumberingPlans.Delete(numPlan);


            /***
             * TESTING MONITORING SERVERS INFO DATA MAPPER
             */
            var monServer = new MonitoringServerInfo
            {
                CreatedAt             = DateTime.Now,
                DatabaseName          = "asdasdasd",
                Description           = "TESTING MONITORING SERVER",
                InstanceHostName      = "SAMPL INSTANCE HOST NAME",
                InstanceName          = "SAMPLE HOST NAME",
                Password              = "******",
                PhoneCallsTable       = "PhoneCalls2012310123",
                TelephonySolutionName = "Lync123124123",
                Username              = "******"
            };

            monServer.Id = storage.MonitoringServers.Insert(monServer);

            monServer.Username = monServer.Username.ToLower();
            monServer.Password = "******";

            status = storage.MonitoringServers.Update(monServer);
            status = storage.MonitoringServers.Delete(monServer);


            /***
             * TESTING MAIL TAMPLEATES DATA MAPPER
             */
            var newTemplate = new MailTemplate
            {
                TemplateBody = "SAMPLE",
                Subject      = "SAMPLE"
            };

            newTemplate.Id = storage.MailTemplates.Insert(newTemplate);

            newTemplate.Subject      = "TESTING TEMPLATE";
            newTemplate.TemplateBody = "TESTING TEMPLATE BODY TEXT";

            status = storage.MailTemplates.Update(newTemplate);
            status = storage.MailTemplates.Delete(newTemplate);


            /***
             * TESTING GATEWAYS RATES DATA MAPPER
             */
            var gatewayRateInfo = new GatewayRate
            {
                CurrencyCode      = "EUR",
                StartingDate      = DateTime.Now,
                EndingDate        = DateTime.MinValue,
                RatesTableName    = null,
                NgnRatesTableName = null,
                ProviderName      = "SAMPLE PROVIDER",
                GatewayId         = 10
            };

            gatewayRateInfo.Id = storage.GatewaysRates.Insert(gatewayRateInfo);

            gatewayRateInfo = storage.GatewaysRates.GetById(gatewayRateInfo.Id);

            gatewayRateInfo.CurrencyCode = "USD";

            status = storage.GatewaysRates.Update(gatewayRateInfo);
            status = storage.GatewaysRates.Delete(gatewayRateInfo);


            /***
             * TESTING GATEWAYS INFO DATA MAPPER
             */
            var sampleGateway = new Gateway
            {
                Name = "SAMPLE GATEWAY"
            };

            sampleGateway.Id = storage.Gateways.Insert(sampleGateway);

            var newGatewayInfo = new GatewayInfo
            {
                Description = "New Info for Gateway",
                GatewayId   = sampleGateway.Id,
                PoolId      = 2,
                SiteId      = 29
            };

            storage.GatewaysInfo.Insert(newGatewayInfo);

            var allGatewayInfo = storage.GatewaysInfo.GetByGatewayId(newGatewayInfo.GatewayId).ToList();

            newGatewayInfo.Description = "Info For Gateway - UPDATED.";

            status = storage.GatewaysInfo.Update(newGatewayInfo);
            status = storage.GatewaysInfo.Delete(newGatewayInfo);
            status = storage.Gateways.Delete(sampleGateway);


            /***
             * TESTING GATEWAYS DATA MAPPER
             */
            var newGateway = new Gateway
            {
                Name = "Sameer"
            };

            newGateway.Id = storage.Gateways.Insert(newGateway);

            newGateway.Name = "Sameer-02";

            status = storage.Gateways.Update(newGateway);
            status = storage.Gateways.Delete(newGateway);


            /***
             * TESTING DIDs DATA MAPPER
             */
            var newDid = new Did
            {
                Description = "SAMPLE DID",
                Regex       = "SAMPLE REGEX",
                SiteId      = 29
            };

            newDid.Id = storage.DiDs.Insert(newDid);

            newDid = storage.DiDs.GetById(newDid.Id);

            newDid.Description = "SAMPLE DID - UPDATED DESCRIPTION";

            status = storage.DiDs.Update(newDid);
            status = storage.DiDs.Delete(newDid);


            /***
             * TESTING DEPARTMENTS
             */
            var department = new Department
            {
                Name        = "SUMURMUR",
                Description = "Sumurmur Department"
            };

            department.Id = storage.Departments.Insert(department);

            department = storage.Departments.GetById(department.Id);

            department.Description = "Never mind!";

            status = storage.Departments.Update(department);
            status = storage.Departments.Delete(department);


            /***
             * TESTING DEPARTMENT HEAD ROLES
             */
            var moa     = storage.Sites.GetById(29);
            var moaIsd  = storage.SitesDepartments.GetBySiteId(29).ToList().Find(item => item.Department.Name == "ISD");
            var depHead = new DepartmentHeadRole
            {
                SipAccount       = "*****@*****.**",
                SiteDepartmentId = moaIsd.Id
            };

            depHead.Id = storage.DepartmentHeads.Insert(depHead);

            depHead = storage.DepartmentHeads.GetById(depHead.Id);

            depHead.SipAccount = "*****@*****.**";

            status = storage.DepartmentHeads.Update(depHead);
            status = storage.DepartmentHeads.Delete(depHead);


            /***
             * TESTING DELEGATE ROLES DATA MAPPER
             */
            moa    = storage.Sites.GetById(29);
            moaIsd = storage.SitesDepartments.GetBySiteId(29).ToList().Find(item => item.Department.Name == "ISD");

            var userDelegate = new DelegateRole
            {
                DelegationType        = 3,
                DelegeeSipAccount     = "*****@*****.**",
                ManagedUserSipAccount = "*****@*****.**"
            };

            var departmentDelegate = new DelegateRole
            {
                DelegationType          = 2,
                DelegeeSipAccount       = "*****@*****.**",
                ManagedSiteDepartmentId = moaIsd.Id
            };

            var siteDelegate = new DelegateRole
            {
                DelegationType    = 1,
                DelegeeSipAccount = "*****@*****.**",
                ManagedSiteId     = moa.Id
            };

            userDelegate.Id       = storage.DelegateRoles.Insert(userDelegate);
            departmentDelegate.Id = storage.DelegateRoles.Insert(departmentDelegate);
            siteDelegate.Id       = storage.DelegateRoles.Insert(siteDelegate);

            var allRoles = storage.DelegateRoles.GetByDelegeeSipAccount(userDelegate.DelegeeSipAccount);

            userDelegate.DelegeeSipAccount       = "*****@*****.**";
            departmentDelegate.DelegeeSipAccount = "*****@*****.**";
            siteDelegate.DelegeeSipAccount       = "*****@*****.**";

            status = storage.DelegateRoles.Update(userDelegate);
            status = storage.DelegateRoles.Update(departmentDelegate);
            status = storage.DelegateRoles.Update(siteDelegate);

            allRoles = storage.DelegateRoles.GetByDelegeeSipAccount(userDelegate.DelegeeSipAccount);

            status = storage.DelegateRoles.Delete(userDelegate);
            status = storage.DelegateRoles.Delete(departmentDelegate);
            status = storage.DelegateRoles.Delete(siteDelegate);


            /***
             * TESTING Currencies DATA MAPPER
             */
            var newCurrency = new Currency
            {
                Iso3Code = "ZVZ",
                Name     = "ZeeVeeZee"
            };

            newCurrency.Id   = storage.Currencies.Insert(newCurrency);
            newCurrency.Name = "ZeeeeVeZe";
            status           = storage.Currencies.Update(newCurrency);
            status           = storage.Currencies.Delete(newCurrency);


            /***
             * TESTING COUNTRIES DATA MAPPER
             */
            var euro       = storage.Currencies.GetByIso3Code("EUR");
            var newCountry = new Country
            {
                CurrencyId = euro.Id,
                Iso2Code   = "ZZ",
                Iso3Code   = "ZVZ",
                Name       = "ZeeVeeZee"
            };

            newCountry.Id       = storage.Countries.Insert(newCountry);
            newCountry          = storage.Countries.GetById(newCountry.Id);
            newCountry.Iso3Code = "VVZ";
            newCountry.Name     = "VeeVeeZee";
            status = storage.Countries.Update(newCountry);
            status = storage.Countries.Delete(newCountry);


            /***
             * TESTING CALL TYPES DATA MAPPER
             */
            var newCallType = new CallType
            {
                Description = "Testing call types data mapper.",
                Name        = "TEST-CALL-TYPE",
                TypeId      = 2345123
            };

            newCallType.Id = storage.CallTypes.Insert(newCallType);

            newCallType.Description = newCallType.Description.ToUpper();
            newCallType.Name        = (newCallType.Name + "-02").ToUpper();

            status = storage.CallTypes.Update(newCallType);
            status = storage.CallTypes.Delete(newCallType);


            /***
             * TESTING CALL MARKER STATUS DATA MAPPER
             */
            var newMarkerStatus = new CallMarkerStatus
            {
                PhoneCallsTable = "PhoneCalls2015",
                Timestamp       = DateTime.Now,
                Type            = Globals.CallMarkerStatus.Type.CallsMarking.Value()
            };

            newMarkerStatus.Id = storage.CallMarkers.Insert(newMarkerStatus);

            newMarkerStatus.Type      = Globals.CallMarkerStatus.Type.ApplyingRates.Value();
            newMarkerStatus.Timestamp = DateTime.Now;

            status = storage.CallMarkers.Update(newMarkerStatus);
            status = storage.CallMarkers.Delete(newMarkerStatus);


            /***
             * TESTING BUNDLED ACCOUNTS
             */
            var bundled1 = new BundledAccount
            {
                PrimarySipAccount    = "*****@*****.**",
                AssociatedSipAccount = "*****@*****.**"
            };

            var bundled2 = new BundledAccount
            {
                PrimarySipAccount    = "*****@*****.**",
                AssociatedSipAccount = "*****@*****.**"
            };

            bundled1.Id = storage.BundledAccounts.Insert(bundled1);
            bundled2.Id = storage.BundledAccounts.Insert(bundled2);

            var allBundled     = storage.BundledAccounts.GetAll();
            var aalhourBundled = storage.BundledAccounts.GetAssociatedSipAccounts("*****@*****.**");

            bundled2.AssociatedSipAccount = "*****@*****.**";

            status = storage.BundledAccounts.Update(bundled2);
            status = storage.BundledAccounts.Delete(bundled1);
            status = storage.BundledAccounts.Delete(bundled2);


            /***
             * TESTING ANNOUNCEMENTS
             */
            var ann = new Announcement
            {
                ForRole          = 10,
                ForSite          = 29,
                PublishOn        = DateTime.Now,
                AnnouncementBody = "Hello Developer."
            };

            ann.Id = storage.Announcements.Insert(ann);

            ann = storage.Announcements.GetById(ann.Id);

            ann.AnnouncementBody = "Hello Developer. Things have changed.";

            status = storage.Announcements.Update(ann);
            status = storage.Announcements.Delete(ann);
        }