public void GetEntitiesWithFiltersTest()
        {
            DbDataProvider provider = new DbDataProvider();

            var result = provider.GetEntities(5, 50, FieldCriteriasBuilder.GetFilterOnCode());
            Assert.AreNotEqual(0, result.Length);
        }
        /// <summary>
        /// Retrieve missing information by id or username of the entities and build the
        /// Enrollment to be inserted in the database
        /// </summary>
        /// <param name="enroll"></param>
        public void InsertEnrollment(EnrollmentEntity enroll)
        {
            DbDataProvider ddp = new DbDataProvider();

            var resApplicant = ddp.GetResourceByIdOrUsername(-1, enroll.Resource.Username);

            if (resApplicant.Count != 1)
            {
                throw new Exception("Error retrieving applicant resource by username " + enroll.Resource.Username);
            }

            var resLeader = ddp.GetResourceByIdOrUsername(-1, enroll.ProjectLeader.Username);

            if (resLeader.Count != 1)
            {
                throw new Exception("Error retrieving applicant leader resource by username " + enroll.ProjectLeader.Username);
            }

            var course = ddp.GetCourseById(enroll.Course.Id);

            if (course == null)
            {
                throw new Exception("Error retrieving course by id " + enroll.Course.Id);
            }

            enroll.Course        = course;
            enroll.Resource      = resApplicant[0];
            enroll.ProjectLeader = resLeader[0];

            ddp.InsertEnrollment(enroll);
        }
        /// <summary>
        /// Retrieve missing information by id or username of the entities and build the
        /// Teacher that will be updated in the db
        /// </summary>
        /// <param name="teacher"></param>
        public void EditTeacher(TeacherEntity teacher)
        {
            DbDataProvider ddp = new DbDataProvider();

            //if resource not arriving from controller
            if (teacher.Resource?.Id == -1)
            {
                var result = ddp.GetResourceByIdOrUsername(-1, teacher.Resource.Username);
                if (result != null && result.Count == 1)
                {
                    teacher.Resource = result[0];
                }
                else
                {
                    throw new Exception("Cannot retrieve resource form username");
                }
            }

            var course = ddp.GetCourseById(teacher.Course.Id);

            if (course != null)
            {
                teacher.Course = course;
            }
            else
            {
                throw new Exception("Cannot retrieve course for id " + teacher.Course.Id);
            }

            ddp.EditTeacher(teacher);
        }
        public void CountTestWithFilters()
        {
            DbDataProvider provider = new DbDataProvider();

            long count = provider.Count(FieldCriteriasBuilder.GetFilterOnCode());
            Assert.AreNotEqual(0, count);
        }
        public void GetEntitiesTest()
        {
            DbDataProvider provider = new DbDataProvider();

            var result = provider.GetEntities(200, 50, FieldCriteriasBuilder.GetNoCriteria());
            Assert.AreNotEqual(0, result.Length);
        }
        public void CountTest()
        {
            DbDataProvider provider = new DbDataProvider();

            long count = provider.Count(FieldCriteriasBuilder.GetNoCriteria());
            Assert.AreNotEqual(0, count);
        }
        public static void ClassInitialize(TestContext testContext)
        {
            var sqlFactory = SqlClientFactory.Instance;
            var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);

            ProviderDefaults.AppProvider = dbProvider;
        }
Example #8
0
        protected AutoCollectionTests(IDataProvider provider)
        {
            _provider = (DbDataProvider)provider;
            _provider.SetLogger(new TextWriterLogAdapter(Console.Out));
            _repo = new SimpleRepository(_provider, SimpleRepositoryOptions.RunMigrations);

            TestSupport.CleanTables(_provider, "Directors", "Movies", "Comments", "NonVirtualRelationProperties");
        }
        public AutoCollectionTests(IDataProvider provider)
        {
            _provider = (DbDataProvider)provider;
            _provider.Log = Console.Out;
            _repo = new SimpleRepository(_provider, SimpleRepositoryOptions.RunMigrations);

            TestSupport.CleanTables(_provider, "Directors", "Movies", "Comments", "NonVirtualRelationProperties");
        }
 public void GetEntityTest()
 {
     DbDataProvider provider = new DbDataProvider();
     //var result = provider.GetEntitiesId(20, 1, FieldCriteriasBuilder.GetNoCriteria());
     //var entity = provider.GetEntity(result.First());11dd9a0d-4523-4704-9be3-68eeaf5ce89a
     var entity = provider.GetEntity("11dd9a0d-4523-4704-9be3-68eeaf5ce89a");
     //Assert.AreNotEqual(0, result.Length);
 }
Example #11
0
        protected AutoCollectionTests(IDataProvider provider)
        {
            _provider = (DbDataProvider)provider;
            _provider.SetLogger(new TextWriterLogAdapter(Console.Out));
            _repo = new SimpleRepository(_provider, SimpleRepositoryOptions.RunMigrations);

            TestSupport.CleanTables(_provider, "Directors", "Movies", "Comments", "NonVirtualRelationProperties");
        }
Example #12
0
        public AutoCollectionTests(IDataProvider provider)
        {
            _provider     = (DbDataProvider)provider;
            _provider.Log = Console.Out;
            _repo         = new SimpleRepository(_provider, SimpleRepositoryOptions.RunMigrations);

            TestSupport.CleanTables(_provider, "Directors", "Movies", "Comments", "NonVirtualRelationProperties");
        }
Example #13
0
        public void CountWithWhereFilterTest()
        {
            var sqlFactory = SqlClientFactory.Instance;
            var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);

            var count = dbProvider.GetCount(DataModel <idlist> .NewQuery().WhereColumn["id"] < 4);

            Assert.IsTrue(count == 4);
        }
Example #14
0
        public void CountTest()
        {
            var sqlFactory = SqlClientFactory.Instance;
            var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);

            var count = dbProvider.GetCount(DataModel <idlist> .NewQuery());

            Assert.IsTrue(count == 1000);
        }
 public PageResult<string> GetResult(int page, FieldCriteria[] criterias)
 {
     var provider = new DbDataProvider();
     var result = new PageResult<string>();
     result.TotalCount = Convert.ToInt32(provider.Count(criterias));
     result.PageCount = result.TotalCount / pageSize + 1;
     result.Page = page;
     result.Result = provider.GetEntitiesId(page, pageSize, criterias);
     return result;
 }
        /// <summary>
        /// Check if the resource has duplicate id or username. If this is the case return false, true otherwise.
        /// </summary>
        /// <param name="res"></param>
        /// <returns></returns>
        private bool CheckResourceInsert(ResourceEntity res)
        {
            DbDataProvider ddp    = new DbDataProvider();
            var            result = ddp.GetResourceByIdOrUsername(res.Id, res.Username);

            if (result != null)
            {
                return(result.Count <= 0);
            }
            return(false);
        }
        //TODO: Why do we need this? How can we have a schema if we don't know the connection?

        //public static IDataProvider GetProvider(string connectionStringName, string providerName, IDatabaseSchema schema)
        //{
        //    IDataProvider _provider = GetProvider(connectionStringName,providerName);

        //    if (!_dataProviders.ContainsKey(connectionStringName))
        //    {
        //        _provider = LoadProvider(connectionStringName);
        //        _provider.Schema = schema;

        //        _dataProviders.Add(connectionStringName, _provider);
        //    }
        //    else
        //    {
        //        _provider = _dataProviders[connectionStringName];
        //    }
        //    return _provider;
        //}

        private static IDataProvider LoadProvider(string connectionString, string providerName)
        {
            //TODO: This is throwing errors and not working

            IDataProvider result = new DbDataProvider(connectionString, providerName);

            if(result == null)
                throw new InvalidOperationException("There is no SubSonic provider for the provider you're using");

            return result;
        }
Example #18
0
 public ChatHub(
     DbDataProvider dbDataProvider,
     UserManager <ApplicationUser> userManager,
     ILogger <ChatHub> logger,
     ControllerUtils controllerUtils
     )
 {
     this.dbDataProvider  = dbDataProvider;
     this.userManager     = userManager;
     this.logger          = logger;
     this.controllerUtils = controllerUtils;
 }
        /// <summary>
        /// Generate the username of the new resource and check if the firts 7 chars are the same of the old one.
        /// In that case means that the username in not modified and replace the new generated with the old one
        /// and update the resource in the db.
        ///
        /// </summary>
        /// <param name="newRes"></param>
        /// <param name="oldRes"></param>
        public void EditResource(ResourceEntity newRes, ResourceEntity oldRes)
        {
            DbDataProvider ddp = new DbDataProvider();

            newRes.Username = GenerateUsername(newRes);
            //if the generated username match the old one don't increase the last number by one
            if (newRes.Username.Substring(0, 7).Equals(oldRes.Username.Substring(0, 7), StringComparison.OrdinalIgnoreCase))
            {
                newRes.Username = oldRes.Username;
            }
            ddp.EditResource(newRes);
        }
Example #20
0
 public static Category CreateInstance(StringBuilder caption)
 {
     if (!DbDataProvider.IsAlreadyInDb(caption))
     {
         var instance = new Category(caption, TestData.RandomData.GetRandomText(5, 25));
         if (instance.AddedToDb())
         {
             instance.DataIsAddedToDb(instance.ToString());
             return(instance);
         }
     }
     return(default(Category));
 }
Example #21
0
        public void DeepLoadEntityManyToOneTest1()
        {
            var sqlFactory = SqlClientFactory.Instance;
            var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);
            var query      = new DataModelQuery <Contact>()
                             .WhereProperty["ID"] == 1;
            var contact = dbProvider.DeepLoadModel(query) as Contact;

            Assert.IsNotNull(contact);
            Assert.IsTrue(contact.Name == "Bobby Joe");
            Assert.IsNotNull(contact.Company);
            Assert.IsTrue(contact.Company.CompanyName == "Foobar, Ltd.");
        }
Example #22
0
 public GroupController(
     ILogger <GroupController> logger,
     DbDataProvider dbDataProvider,
     ControllerUtils controllerUtils,
     UserManager <ApplicationUser> userManager,
     IHubContext <ChatHub> hubContext
     )
 {
     this.logger          = logger;
     this.dbDataProvider  = dbDataProvider;
     this.controllerUtils = controllerUtils;
     this.userManager     = userManager;
     this.hubContext      = hubContext;
 }
        /// <summary>
        /// Retrieve missing information by id or username of the entities and build the
        /// Enrollment that will be updated
        /// </summary>
        /// <param name="enroll"></param>
        public void EditEnrollment(EnrollmentEntity enroll)
        {
            DbDataProvider ddp = new DbDataProvider();

            //if resource not arriving from controller
            if (enroll.Resource.Id == -1)
            {
                var result = ddp.GetResourceByIdOrUsername(-1, enroll.Resource.Username);
                if (result != null && result.Count == 1)
                {
                    enroll.Resource = result[0];
                }
                else
                {
                    throw new Exception("Cannot retrieve applicant from username " + enroll.Resource.Username);
                }
            }

            //if project leader not arriving from controller
            if (enroll.ProjectLeader.Id == -1)
            {
                var result = ddp.GetResourceByIdOrUsername(-1, enroll.ProjectLeader.Username);
                if (result != null && result.Count == 1)
                {
                    enroll.ProjectLeader = result[0];
                }
                else
                {
                    throw new Exception("Cannot retrieve project leader from username " + enroll.ProjectLeader.Username);
                }
            }


            var course = ddp.GetCourseById(enroll.Course.Id);

            if (course != null)
            {
                enroll.Course = course;
            }
            else
            {
                throw new Exception("Cannot retrieve course for id " + enroll.Course.Id);
            }

            ddp.EditEnrollment(enroll);
        }
        /// <summary>
        /// Generate the username based on the resource data and insert in the database
        /// if hasn't a duplicate ID or username
        /// </summary>
        /// <param name="res"></param>
        public void InsertResource(ResourceEntity res)
        {
            if (string.IsNullOrEmpty(res.Username))
            {
                res.Username = GenerateUsername(res);
            }

            if (CheckResourceInsert(res))
            {
                DbDataProvider ddp = new DbDataProvider();
                ddp.InsertResource(res);
            }
            else
            {
                throw new Exception("Cannot insert resource. Duplicate ID or Username");
            }
        }
        public void EditCourse(CourseEntity course)
        {
            DbDataProvider ddp = new DbDataProvider();

            //if coordinator not arriving from controller
            if (course.Coordinator?.Id == -1)
            {
                var result = ddp.GetResourceByIdOrUsername(-1, course.Coordinator.Username);
                if (result != null && result.Count == 1)
                {
                    course.Coordinator = result[0];
                }
                else
                {
                    throw new Exception("Cannot retrieve resource form user or id");
                }
            }
            ddp.EditCourse(course);
        }
Example #26
0
        public void DeepLoadEntityOneToManyTest2()
        {
            var sqlFactory = SqlClientFactory.Instance;
            var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);

            var query = new DataModelQuery <DataModel <Company> >()
                        .WhereProperty["ID"] == 2;
            var decompany = dbProvider.DeepLoadModel(query) as DataModel <Company>;

            Assert.IsNotNull(decompany);
            Company company = decompany.Entity;

            Assert.IsNotNull(company);
            Assert.IsNotNull(company.Contacts, "Contacts not populated");
            Assert.IsTrue(company.Contacts.Count == 2, company.Contacts.Count.ToString() + " loaded (expected 2).");
            Assert.IsTrue(company.Contacts[0].Name == "Bobby Joe" ||
                          company.Contacts[0].Name == "Jane Lane");
            Assert.IsTrue(company.Contacts[1].Name == "Bobby Joe" ||
                          company.Contacts[1].Name == "Jane Lane");
        }
Example #27
0
        public static DbConnection CreateDbConnection(DbDataProvider provider, string connectionString, bool openConnection = false)
        {
            switch (provider)
            {
            case DbDataProvider.MsSql:
                return(CreateDbConnection("System.Data.SqlClient", connectionString, openConnection));

            case DbDataProvider.Oracle:
                throw new NotSupportedException("Please implement Unit of Work with Oracle Client.");

            case DbDataProvider.Odbc:
                throw new NotSupportedException("Please implement Unit of Work with Odbc Client.");

            case DbDataProvider.OleDb:
                throw new NotSupportedException("Please implement Unit of Work with OleDb Client.");

            default:
                throw new NotSupportedException("Not supported data provider.");
            }
        }
Example #28
0
        public void DeepSaveEntityTest()
        {
            // todo: test all four relationship types

            try
            {
                var sqlFactory = SqlClientFactory.Instance;
                var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);

                var query = new DataModelQuery <DataModel <Company> >()
                            .WhereProperty["ID"] == 1;
                var decompany = dbProvider.DeepLoadModel(query);
                var company   = decompany.Entity;
                company.CompanyName += "_";
                foreach (var c in company.Contacts)
                {
                    c.Name += "_";
                }
                decompany.Save(true);

                query = new DataModelQuery <DataModel <Company> >()
                        .WhereProperty["ID"] == 1;
                decompany = dbProvider.DeepLoadModel(query);
                company   = decompany.Entity;
                Assert.IsTrue(company.CompanyName.Length > 1 &&
                              company.CompanyName.EndsWith("_"));
                Assert.IsTrue(company.Contacts[0]
                              .Name.Length > 1 &&
                              company.Contacts[0]
                              .Name.EndsWith("_"));
                Assert.IsTrue(company.Contacts[company.Contacts.Count - 1]
                              .Name.Length > 1 &&
                              company.Contacts[company.Contacts.Count - 1]
                              .Name.EndsWith("_"));
            }
            finally
            {
                // clean-up
                ReloadData_CompanyContact();
            }
        }
        /// <summary>
        /// Generate the username based on the Name, Surname and the number of the already inserted username with the same value.
        /// Accepting only 8 chars the valid username are composed by the first 5 chars of the surname, the first 2 chars of the name
        /// and a number. For this reason only 9 resources with the same prefix are accepted by the system. Further Resources inserted
        /// past the 9 admitted are not managed and will be refused.
        /// If a name or surname is too short to match the 7 char requisite the remaining characters will be padded with a 'A' char.
        /// The result username will be in uppercase.
        /// </summary>
        /// <param name="res"></param>
        /// <returns>The username generated</returns>
        private string GenerateUsername(ResourceEntity res)
        {
            try
            {
                var    partSurn        = res.Surname.Length < 5 ? res.Surname : res.Surname.Substring(0, 5);
                var    partName        = (res.Name.Length < (7 - partSurn.Length)) ? res.Name : res.Name.Substring(0, 7 - partSurn.Length);
                string partialUsername = $"{partSurn}{partName}";
                partialUsername = partialUsername.PadRight(7, 'a').ToUpper();

                DbDataProvider ddp    = new DbDataProvider();
                var            result = ddp.GetResourcesByPartialUsername(partialUsername);
                if (result.Count() == 0)
                {
                    return(partialUsername + 1);
                }
                var numbers = result.Select(x => int.Parse(x.Username.Substring(7, 1)));
                //the numbers are in sequence and no empty slot left
                if (numbers.Max() == result.Count)
                {
                    return(partialUsername + (result.Count + 1));
                }
                //there are some free numbers in the sequence
                else
                {
                    //search for the first free number and take it
                    for (int i = 1; i <= numbers.Count(); i++)
                    {
                        if (numbers.FirstOrDefault(x => x == i) == 0)
                        {
                            return(partialUsername + i);
                        }
                    }
                }
                return(partialUsername.Substring(0, 6) + 10); //only 8 chars in db..to be managed in future
            }
            catch (Exception ex)
            {
                Logger.DbLog.LogError("Error generating username for resource " + res, ex);
                throw ex;
            }
        }
        /// <summary>
        /// Retrieve missing information by id or username of the entities and build the
        /// Teacher to be inserted in the database
        /// </summary>
        /// <param name="tch"></param>
        public void InsertTeacher(TeacherEntity tch)
        {
            DbDataProvider ddp      = new DbDataProvider();
            var            resource = ddp.GetResourceByIdOrUsername(-1, tch.Resource.Username);

            if (resource.Count != 1)
            {
                throw new Exception("Error retrieving resource by username " + tch.Resource.Username);
            }

            var course = ddp.GetCourseById(tch.Course.Id);

            if (course == null)
            {
                throw new Exception("Error retrieving course by id " + tch.Course.Id);
            }

            tch.Course   = course;
            tch.Resource = resource[0];

            ddp.InsertTeacher(tch);
        }
Example #31
0
        public void DeepLoadEntityManyToManyTest()
        {
            var sqlFactory = SqlClientFactory.Instance;
            var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);

            var query  = new DataModelQuery <DataModel <Group> >();
            var groups = dbProvider.DeepLoadModels(query);

            Assert.IsTrue(groups.Count == 2, "Groups did not load");
            Assert.IsNotNull(groups[0].Entity, "Group 0 Entity was not set");
            Assert.IsNotNull(groups[0].Entity.Users, "Group 0 Users were not set");
            Assert.IsTrue(groups[0].Entity.Users.Count == 2, "Users count (group 0 of 0,1) is not 2");
            Assert.IsNotNull(groups[1].Entity, "Group 1 Entity was not set");
            Assert.IsNotNull(groups[0].Entity.Users, "Group 1 Users were not set");
            Assert.IsTrue(groups[1].Entity.Users.Count == 2, "Users count (group 1 of 0,1) is not 2");

            Assert.IsTrue(groups[0].Entity.Users[0].ID
                          != groups[1].Entity.Users[0].ID, "Same user loaded between groups");
            Assert.IsTrue(groups[0].Entity.Users[0].ID
                          != groups[1].Entity.Users[1].ID, "Same user loaded between groups");
            Assert.IsTrue(groups[1].Entity.Users[0].ID
                          != groups[0].Entity.Users[0].ID, "Same user loaded between groups");
        }
Example #32
0
        public void DefaultDBProviderTest()
        {
            var sqlFactory = SqlClientFactory.Instance;
            var dbProvider = new DbDataProvider(sqlFactory, TestSqlConnection);

            ProviderDefaults.AppProvider = dbProvider;
            var poco = new MockPoco();

            poco.MockStringValue = "Provider wuz here";
            var pocoModel = new DataModel <MockPoco>(poco);

            pocoModel.Save();
            var q = DataModel <MockPoco> .NewQuery()
                    .WhereProperty["MockStringValue"]
                    .IsEqualTo("Provider wuz here");

            pocoModel = dbProvider.LoadModel(q);
            Assert.IsNotNull(poco);
            Assert.IsTrue(pocoModel.Entity.MockStringValue == "Provider wuz here");
            Assert.IsTrue(pocoModel.Entity.ID > 0);

            // clean-up
        }
 public Entity GetEntity(string identifier)
 {
     var provider = new DbDataProvider();
     return provider.GetEntity(identifier);
 }
        public CourseEntity DeleteCourse(CourseEntity course)
        {
            DbDataProvider ddp = new DbDataProvider();

            return(ddp.DeleteCourse(course));
        }
        public CourseEntity GetCourse(int id)
        {
            DbDataProvider ddp = new DbDataProvider();

            return(ddp.GetCourseById(id));
        }
        public List <CourseEntity> GetAllCourses()
        {
            DbDataProvider ddp = new DbDataProvider();

            return(ddp.GetAllCourses());
        }
Example #37
0
 protected void ProcessData(object sender, ElapsedEventArgs args)
 {
     _timer.Enabled = false;
     SenderService.SendData(DbDataProvider.GetMarks());
     _timer.Enabled = true;
 }
        public void DeleteEnrollment(EnrollmentEntity enroll)
        {
            DbDataProvider ddp = new DbDataProvider();

            ddp.DeleteEnrollment(enroll);
        }
        public EnrollmentEntity GetEnrollment(int id)
        {
            DbDataProvider ddp = new DbDataProvider();

            return(ddp.GetEnrollmentById(id));
        }
        public List <EnrollmentEntity> GetAllEnrollments()
        {
            DbDataProvider ddp = new DbDataProvider();

            return(ddp.GetAllenrollments());
        }