Example #1
0
 private void FixMissingSchoolUsersSync(IList <Guid> districtIds)
 {
     ForEachDistrict(districtIds, delegate(District d, ConnectorLocator cl, UnitOfWork mu, UnitOfWork du)
     {
         var inowSchoolUsers      = (cl.SyncConnector.GetDiff(typeof(UserSchool), null) as SyncResult <UserSchool>).All;
         var conds                = new SimpleQueryCondition("DistrictRef", d.Id, ConditionRelation.Equal);
         var chalkableSchoolUsers = (new DataAccessBase <SchoolUser>(mu)).GetAll(conds);
         var toAdd                = new List <SchoolUser>();
         foreach (var inowSchoolUser in inowSchoolUsers)
         {
             if (
                 !chalkableSchoolUsers.Any(
                     x => x.SchoolRef == inowSchoolUser.SchoolID && x.UserRef == inowSchoolUser.UserID))
             {
                 toAdd.Add(new SchoolUser()
                 {
                     SchoolRef   = inowSchoolUser.SchoolID,
                     UserRef     = inowSchoolUser.UserID,
                     DistrictRef = d.Id
                 });
                 Debug.WriteLine($"adding {inowSchoolUser.UserID} {inowSchoolUser.SchoolID}");
             }
         }
         (new DataAccessBase <SchoolUser>(mu)).Insert(toAdd);
     });
 }
Example #2
0
        public void FixMissingUsersSync(Guid districtid)
        {
            var mcs = "Data Source=yqdubo97gg.database.windows.net;Initial Catalog=ChalkableMaster;UID=chalkableadmin;Pwd=Hellowebapps1!";

            District d;
            IList <Data.Master.Model.User> existingUsers;

            using (var uow = new UnitOfWork(mcs, false))
            {
                var da = new DistrictDataAccess(uow);
                d = da.GetById(districtid);
                var conds = new SimpleQueryCondition("DistrictRef", districtid, ConditionRelation.Equal);
                existingUsers = (new UserDataAccess(uow)).GetAll(conds);
            }
            var cs = String.Format("Data Source={0};Initial Catalog={1};UID=chalkableadmin;Pwd=Hellowebapps1!", d.ServerUrl, d.Id);
            IList <SyncVersion> versions;

            using (var uow = new UnitOfWork(cs, true))
            {
                versions = (new SyncVersionDataAccess(uow)).GetAll();
                uow.Commit();
            }

            var cl           = ConnectorLocator.Create(d.SisUserName, d.SisPassword, d.SisUrl);
            var addedUsers   = (cl.SyncConnector.GetDiff(typeof(User), versions.First(x => x.TableName == "User").Version) as SyncResult <User>).Inserted;
            var allInowUsers = (cl.SyncConnector.GetDiff(typeof(User), null) as SyncResult <User>).All;
            var allUsers     = (cl.SyncConnector.GetDiff(typeof(User), null) as SyncResult <User>).All;
            //var addedUserSchools = (cl.SyncConnector.GetDiff(typeof(UserSchool), versions.First(x => x.TableName == "UserSchool").Version) as SyncResult<UserSchool>).Inserted;

            IList <Data.Master.Model.User> users = new List <Data.Master.Model.User>();
            var ids             = allInowUsers.Select(x => x.UserID).Distinct();
            var existingUserSet = new HashSet <int>(existingUsers.Select(x => x.SisUserId.Value).ToList());

            foreach (var addedUserSchool in ids)
            {
                if (!existingUserSet.Contains(addedUserSchool))
                {
                    if (addedUsers.All(x => x.UserID != addedUserSchool))
                    {
                        var sisu = allUsers.First(x => x.UserID == addedUserSchool);
                        Data.Master.Model.User u = new Data.Master.Model.User
                        {
                            Id          = Guid.NewGuid(),
                            DistrictRef = districtid,
                            FullName    = sisu.FullName,
                            Login       = $"user{sisu.UserID}_{districtid}@chalkable.com",
                            Password    = "******",
                            SisUserName = sisu.UserName,
                            SisUserId   = sisu.UserID
                        };
                        users.Add(u);
                    }
                }
            }


            using (var uow = new UnitOfWork(mcs, true))
            {
                (new UserDataAccess(uow)).Insert(users);
                uow.Commit();
            }
        }