private static bool Auth()
        {
            CMSDataContext      db  = CMSDataContext.Create(HttpContextFactory.Current);
            CMSImageDataContext idb = CMSImageDataContext.Create(HttpContextFactory.Current);

            return(AccountModel.AuthenticateMobile(db, idb, "Checkin").IsValid);
        }
예제 #2
0
        public void UpdateImageFromBitsTest()
        {
            int id;

            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                var image = CreateJpegImage();
                db.Images.InsertOnSubmit(image);
                db.SubmitChanges();
                id    = image.Id;
                image = null;
            }

            Image newImage;

            var bytes = GetImageBytes("Untitled");

            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                newImage = db.UpdateImageFromBits(id, bytes);
            }
            var expected = GetImageBytes("UpdateImageFromBitsTest");

            newImage.Bits.ShouldBe(expected);
            newImage.Mimetype.ShouldBe("image/jpeg");
        }
예제 #3
0
        public void JoinUnJoinOrg(int PeopleId, int OrgId, bool Member)
        {
            var db = DbUtil.Db;
            var om = db.OrganizationMembers.SingleOrDefault(m => m.PeopleId == PeopleId && m.OrganizationId == OrgId);

            if (om == null && Member)
            {
                om = OrganizationMember.InsertOrgMembers(db,
                                                         OrgId, PeopleId, MemberTypeCode.Member, DateTime.Now, null, false);
            }
            else if (om != null && !Member)
            {
                om.Drop(db, CMSImageDataContext.Create(db.Host));
            }

            db.SubmitChanges();

            var org = db.LoadOrganizationById(OrgId);

            if (org != null && org.NotifyIds.HasValue())
            {
                var p    = db.LoadPersonById(PeopleId);
                var what = Member ? "joined" : "dropped";
                //                db.Email(DbUtil.Db.Util.AdminMail,
                //                    db.PeopleFromPidString(org.NotifyIds),
                //                    $"cms check-in, {what} class on " + db.CmsHost,
                //                    $"<a href='{Util.ServerLink("/Person2/" + PeopleId)}/Person2/{PeopleId}'>{p.Name}</a> {what} {org.OrganizationName}");
                DbUtil.LogActivity($"cms check-in, {what} class ({p.PeopleId})");
            }
        }
예제 #4
0
        private static bool Authenticate(string role = "Checkin")
        {
            var db  = CMSDataContext.Create(HttpContextFactory.Current);
            var idb = CMSImageDataContext.Create(HttpContextFactory.Current);

            return(AccountModel.AuthenticateMobile(db, idb, "Checkin").IsValid);
        }
예제 #5
0
        public static void DoMoveWork(MoveOrgMembersModel model)
        {
            var statusContext = CMSDataContext.Create(model.Host);
            var workerContext = CMSDataContext.Create(model.Host);

            workerContext.CommandTimeout = 2200;
            var cul = workerContext.Setting("Culture", "en-US");

            Thread.CurrentThread.CurrentUICulture = new CultureInfo(cul);
            Thread.CurrentThread.CurrentCulture   = CultureInfo.CreateSpecificCulture(cul);
            LongRunningOperation lop = FetchLongRunningOperation(statusContext, Op, model.QueryId);
            var orgsPeople           = new Dictionary <int, List <int> >();

            foreach (var i in model.List) // {personId}.{organizationId}
            {
                var a = i.Split('.');
                if (a.Length != 2)
                {
                    continue;
                }

                var orgId = a[1].ToInt();

                if (orgId == model.TargetId)
                {
                    continue;
                }

                if (!orgsPeople.ContainsKey(orgId))
                {
                    orgsPeople[orgId] = new List <int>();
                }
                orgsPeople[orgId].Add(a[0].ToInt());
            }

            foreach (var oid in orgsPeople.Keys)
            {
                var peopleIds = orgsPeople[oid];
                foreach (var pid in peopleIds)
                {
                    OrganizationMember.MoveToOrg(workerContext, CMSImageDataContext.Create(workerContext.Host), pid, oid, model.TargetId, model.MoveRegistrationData, model.ChangeMemberType == true ? model.MoveToMemberTypeId : -1);
                    if (lop != null)
                    {
                        lop.Processed++;
                        lop.CustomMessage = $"Working from {pid},{oid} to {model.TargetId}";
                        statusContext.SubmitChanges();
                    }
                }
                BackgroundRepairTransactions(model.repairExe, oid, workerContext);
            }
            BackgroundRepairTransactions(model.repairExe, model.TargetId, workerContext);
            // finished
            if (lop != null)
            {
                lop.Completed = DateTime.Now;
                statusContext.SubmitChanges();
            }
            workerContext.UpdateMainFellowship(model.TargetId);
        }
예제 #6
0
 public RequestManager()
 {
     CurrentHttpContext   = HttpContextFactory.Current;
     RequestId            = Guid.NewGuid();
     CurrentUser          = CurrentHttpContext.User;
     CurrentDatabase      = CMSDataContext.Create(CurrentHttpContext);
     CurrentImageDatabase = CMSImageDataContext.Create(CurrentHttpContext);
 }
예제 #7
0
 public FakeRequestManager()
 {
     CurrentHttpContext   = ContextTestUtils.CreateMockHttpContext().Object;
     CurrentDatabase      = CMSDataContext.Create(DatabaseFixture.Host);
     CurrentImageDatabase = CMSImageDataContext.Create(DatabaseFixture.Host);
     CurrentUser          = CurrentHttpContext.User;
     RequestId            = Guid.NewGuid();
 }
예제 #8
0
        public void DropSingleMember(int orgId, int peopleId)
        {
            var org = CurrentDatabase.LoadOrganizationById(orgId);
            var om  = org.OrganizationMembers.Single(mm => mm.PeopleId == peopleId);

            om.Drop(CurrentDatabase, CMSImageDataContext.Create(CurrentDatabase.Host));
            CurrentDatabase.SubmitChanges();
        }
예제 #9
0
 public FakeRequestManager(bool isAuthenticated)
 {
     CurrentHttpContext   = ContextTestUtils.CreateMockHttpContext(isAuthenticated).Object;
     CurrentDatabase      = CMSDataContext.Create(DatabaseFixture.Host);
     CurrentImageDatabase = CMSImageDataContext.Create(DatabaseFixture.Host);
     CurrentUser          = CurrentHttpContext.User;
     RequestId            = Guid.NewGuid();
     SessionProvider      = new CmsSessionProvider(CurrentDatabase);
 }
예제 #10
0
 public void DropOrgMember(object pid, object orgId)
 {
     db.LogActivity($"PythonModel.DropOrgMember({pid},{orgId})");
     using (var db2 = NewDataContext())
     {
         var om = db2.OrganizationMembers.Single(m => m.PeopleId == pid.ToInt() && m.OrganizationId == orgId.ToInt());
         om.Drop(db2, CMSImageDataContext.Create(db2.Host));
         db2.SubmitChanges();
     }
 }
예제 #11
0
 public RequestManager()
 {
     CurrentHttpContext   = HttpContextFactory.Current;
     RequestId            = Guid.NewGuid();
     CurrentUser          = CurrentHttpContext.User;
     CurrentDatabase      = CMSDataContext.Create(CurrentHttpContext);
     CurrentImageDatabase = CMSImageDataContext.Create(CurrentHttpContext);
     SessionProvider      = new CmsSessionProvider();
     CurrentHttpContext.Items["SessionProvider"] = SessionProvider;
 }
예제 #12
0
        public void DropAllMemberships(CMSDataContext Db)
        {
            var list = (from om in Db.OrganizationMembers
                        where om.PeopleId == PeopleId
                        select om).ToList();

            foreach (var om in list)
            {
                om.Drop(Db, CMSImageDataContext.Create(Db.Host), DateTime.Now);
            }
        }
예제 #13
0
        public void InsertTest()
        {
            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                var other = NewOther();
                db.Others.InsertOnSubmit(other);
                db.SubmitChanges();

                db.Others.Where(o => o.Id == other.Id).Any().ShouldBeTrue();
            }
        }
예제 #14
0
        public void ImageFromIdTest()
        {
            var image = CreateJpegImage();

            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                db.Images.InsertOnSubmit(image);
                db.SubmitChanges();
                Image.ImageFromId(db, image.Id).ShouldNotBeNull();
            }
        }
예제 #15
0
        public void DeleteOnSubmitTest()
        {
            var db    = CMSImageDataContext.Create(Util.Host);
            var image = CreateJpegImage();

            db.Images.InsertOnSubmit(image);
            db.SubmitChanges();

            db.DeleteOnSubmit(image.Id);
            db.SubmitChanges();
            db.Images.Where(i => i.Id == image.Id).Any().ShouldBeFalse();
        }
예제 #16
0
        public static AuthResult AuthenticateDeveloper(HttpContextBase context, bool shouldLog = false, string additionalRole = "", string altrole = "")
        {
            var auth = context.Request.Headers["Authorization"];
            var db   = CMSDataContext.Create(context);
            var idb  = CMSImageDataContext.Create(context);

            if (!auth.HasValue())
            {
                return new AuthResult {
                           IsAuthenticated = false, Message = "!API no Authorization Header"
                }
            }
            ;

            var cred = Encoding.ASCII.GetString(
                Convert.FromBase64String(auth.Substring(6))).Split(':');
            var username = cred[0];
            var password = cred[1];

            var valid = CMSMembershipProvider.provider.ValidateUser(username, password);

            if (valid)
            {
                var roles = CMSRoleProvider.provider;

                var isdev = roles.IsUserInRole(username, "Developer");
                var isalt = altrole.HasValue() && roles.IsUserInRole(username, altrole);
                if ((!isdev && !isalt) || (additionalRole.HasValue() && !roles.IsUserInRole(username, additionalRole)))
                {
                    valid = false;
                }
            }

            User user = null;

            if (valid)
            {
                user = AccountModel.SetUserInfo(db, idb, username);
            }
            var message = valid ? $" API {username} authenticated" : $"!API {username} not authenticated";

            if (shouldLog)
            {
                CmsData.DbUtil.LogActivity(message.Substring(1));
            }

            return(new AuthResult {
                IsAuthenticated = valid, User = user, Message = message
            });
        }
    }
예제 #17
0
        public void NewTextFromStringTest()
        {
            const string text = "this is a test";
            Image        image;

            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                image = Image.NewTextFromString(text, db);
            }

            image.Bits.ShouldBe(Encoding.ASCII.GetBytes(text));
            image.Mimetype.ShouldBe(mimeTypeText);
            image.Id.ShouldNotBe(0);
        }
예제 #18
0
        public void DebugCleanUp()
        {
            var q = from om in CurrentDatabase.OrganizationMembers
                    where new[] { 828612, Util.UserPeopleId }.Contains(om.PeopleId)
            where om.OrganizationId == Orgid
            select om;

            foreach (var om in q)
            {
                om.Drop(CurrentDatabase, CMSImageDataContext.Create(CurrentDatabase.Host), DateTime.Now);
                CurrentDatabase.ExecuteCommand("DELETE dbo.EnrollmentTransaction WHERE PeopleId = {0} AND OrganizationId = {1}", om.PeopleId, om.OrganizationId);
            }
            CurrentDatabase.SubmitChanges();
        }
예제 #19
0
        public string Move(int toid, CMSDataContext db)
        {
            if (!PeopleId.HasValue || !OrgId.HasValue)
            {
                return("not moved");
            }

            OrganizationMember.MoveToOrg(db, CMSImageDataContext.Create(db.Host), PeopleId.Value, OrgId.Value, toid, MoveRegistrationData);
            DbUtil.LogActivity("OrgMem Move to " + toid, OrgId, PeopleId);

            var repairExe = HttpContextFactory.Current.Server.MapPath("~/bin/RepairOrg.exe");

            MoveOrgMembersModel.BackgroundRepairTransactions(repairExe, toid, db);
            MoveOrgMembersModel.BackgroundRepairTransactions(repairExe, OrgId.Value, db);
            return("moved");
        }
예제 #20
0
        public void AssignPending()
        {
            if (TargetClassId == 0)
            {
                RemoveAssignments();
                return;
            }
            var db = DbUtil.Db;
            var t  = db.Organizations.SingleOrDefault(o => o.OrganizationId == TargetClassId);

            if (t == null)
            {
                return;
            }


            foreach (var i in selected)
            {
                var a    = i.Split(',');
                var foid = a[1].ToInt();
                var pid  = a[0].ToInt();

                // this is their membership where they are currently a member
                var fom = db.OrganizationMembers.Single(m => m.OrganizationId == foid && m.PeopleId == pid);

                // drop pending in previously assigned to org
                var prevtoid = fom.GetExtra(db, "PromotingTo").ToInt();
                var prevto   = db.OrganizationMembers.SingleOrDefault(m => m.OrganizationId == prevtoid && m.PeopleId == pid && m.Pending == true);
                prevto?.Drop(db, CMSImageDataContext.Create(db.Host));
                db.SubmitChanges();

                // now put them in the to class as pending member
                if (t.OrganizationId != fom.OrganizationId) // prevent promoting into the same class as they are currently in
                {
                    OrganizationMember.InsertOrgMembers(db,
                                                        t.OrganizationId,
                                                        a[0].ToInt(),
                                                        fom.MemberTypeId, // keep their Existing membertype
                                                        Util.Now,
                                                        null, true);
                    // record where they will be going
                    fom.AddEditExtraInt("PromotingTo", t.OrganizationId);
                    db.SubmitChanges();
                }
            }
            db.UpdateMainFellowship(t.OrganizationId);
        }
예제 #21
0
        public void ContentTest(string contentType, string content)
        {
            var db    = CMSImageDataContext.Create(Util.Host);
            var image = new Image
            {
                Bits     = Encoding.UTF8.GetBytes(content),
                Mimetype = contentType,
                Length   = content.Length,
            };

            db.Images.InsertOnSubmit(image);
            db.SubmitChanges();

            var expected = contentType.Equals("text/plain") ? content : null;

            db.Content(image.Id).ShouldBe(expected);
        }
예제 #22
0
        private void DoWork(OrgSearchDrop model)
        {
            var db  = CMSDataContext.Create(model.Host);
            var idb = CMSImageDataContext.Create(model.Host);
            var cul = db.Setting("Culture", "en-US");

            Thread.CurrentThread.CurrentUICulture = new CultureInfo(cul);
            Thread.CurrentThread.CurrentCulture   = CultureInfo.CreateSpecificCulture(cul);

            LongRunningOperation lop = null;

            foreach (var orginfo in model.orginfos)
            {
                var pids = (from m in db.OrganizationMembers
                            where m.OrganizationId == orginfo.Id
                            select m.PeopleId
                            ).ToList();
                var n = 0;
                foreach (var pid in pids)
                {
                    n++;
                    var om = db.OrganizationMembers.Single(mm => mm.PeopleId == pid && mm.OrganizationId == orginfo.Id);
                    if (DropDate.HasValue)
                    {
                        om.Drop(db, idb, DropDate.Value);
                    }
                    else
                    {
                        om.Drop(db, idb);
                    }

                    lop = FetchLongRunningOperation(db, Op, model.QueryId);
                    Debug.Assert(lop != null, "r != null");
                    lop.Processed++;
                    lop.CustomMessage = $"Working on {orginfo.Name.Truncate(170)}, {n}/{pids.Count}";
                    db.SubmitChanges();
                }
                var o = db.LoadOrganizationById(orginfo.Id);
                o.OrganizationStatusId = CmsData.Codes.OrgStatusCode.Inactive;
                db.SubmitChanges();
            }
            // finished
            lop           = FetchLongRunningOperation(db, Op, model.QueryId);
            lop.Completed = DateTime.Now;
            db.SubmitChanges();
        }
예제 #23
0
        public void CreateNewTinyImageTest()
        {
            Image resized;

            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                var image = ImageFromResource("CreateNewTinyImageTest");
                resized = image.CreateNewTinyImage(db);
            }

            resized.Bits.Length.ShouldBe(1249);
            using (var ms = new MemoryStream(resized.Bits))
            {
                var i = System.Drawing.Image.FromStream(ms);
                i.Width.ShouldBe(50);
                i.Height.ShouldBe(50);
            }
        }
예제 #24
0
 public string DropOrgMember(int OrgId, int PeopleId)
 {
     try
     {
         var om = Db.OrganizationMembers.SingleOrDefault(mm => mm.OrganizationId == OrgId && mm.PeopleId == PeopleId);
         if (om == null)
         {
             throw new Exception("no orgmember");
         }
         om.Drop(Db, CMSImageDataContext.Create(Db.Host), DateTime.Now);
         Db.SubmitChanges();
         return(@"<DropOrgMember status=""ok"" />");
     }
     catch (Exception ex)
     {
         return($@"<DropOrgMember status=""error"">{HttpUtility.HtmlEncode(ex.Message)}</DropOrgMember>");
     }
 }
예제 #25
0
        public void DeleteTest()
        {
            Other other;

            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                other = NewOther();
                db.Others.InsertOnSubmit(other);
                db.SubmitChanges();
            }

            using (var db = CMSImageDataContext.Create(Util.Host))
            {
                db.Others.DeleteOnSubmit(db.Others.Where(o => o.Id == other.Id).First());
                db.SubmitChanges();

                db.Others.Where(o => o.Id == other.Id).Any().ShouldBeFalse();
            }
        }
예제 #26
0
        public void SaveUnlayerTemplate_Should_Create_Thumbnail()
        {
            var db = CMSImageDataContext.Create(DatabaseFixture.Host);

            db.ExecuteCommand("DELETE FROM Image");

            username = RandomString();
            password = RandomString();
            var user = CreateUser(username, password, roles: new string[] { "Admin", "Edit", "Access", "Checkin" });

            Login();
            Wait(3);
            Open($"{rootUrl}Display/#tab_emailTemplates");
            Find(text: "Example Template").Click();
            Find(id: "SaveTemplateButton").Click();
            Wait(3);

            db.Images.ShouldNotBeEmpty();
        }
예제 #27
0
        private bool ReplacePic(Paragraph pg, string code, DirectoryInfo di)
        {
            if (!picre.IsMatch(code))
            {
                return(false);
            }

            var m      = picre.Match(code);
            var pic    = m.Groups["pic"].Value;
            var height = m.Groups["height"].Value.ToDouble();
            var width  = m.Groups["width"].Value.ToDouble();

            pg.ReplaceText(code, "");
            using (var idb = CMSImageDataContext.Create(HttpContextFactory.Current))
            {
                AddPicture(idb, pg, width, height, pic == "pic" ? di.ImageId : di.FamImageId);
            }
            return(true);
        }
예제 #28
0
        private void RemoveAssignments()
        {
            foreach (var i in selected)
            {
                var a    = i.Split(',');
                var foid = a[1].ToInt();
                var pid  = a[0].ToInt();
                var db   = DbUtil.Db;

                // this is their membership where they are currently a member
                var fom = db.OrganizationMembers.Single(m => m.OrganizationId == foid && m.PeopleId == pid);

                // drop pending in previously assigned to org
                var prevtoid = fom.GetExtra(db, "PromotingTo").ToInt();
                var prevto   = db.OrganizationMembers.SingleOrDefault(m => m.OrganizationId == prevtoid && m.PeopleId == pid && m.Pending == true);
                prevto?.Drop(db, CMSImageDataContext.Create(db.Host));
                fom.RemoveExtraValue(db, "PromotingTo");
                db.SubmitChanges();
            }
        }
예제 #29
0
        public void Promote(int id)
        {
            var db      = DbUtil.Db;
            var p       = db.Promotions.Single(pr => pr.Id == id);
            var fromdiv = p.FromDivId;
            var q       = from om in db.OrganizationMembers
                          where om.Organization.DivOrgs.Any(d => d.DivId == fromdiv)
                          where (om.Pending ?? false) == false
                          let pcid                   = om.OrgMemberExtras.Where(vv => vv.Field == "PromotingTo").Select(vv => vv.IntValue).SingleOrDefault()
                                              let pc = db.OrganizationMembers.FirstOrDefault(op =>
                                                                                             op.Pending == true &&
                                                                                             op.PeopleId == om.PeopleId &&
                                                                                             op.OrganizationId == pcid)
                                                       where pc != null
                                                       where om.OrganizationId != pc.OrganizationId // should not promote to same class
                                                       select new { om, pc };
            var list  = new Dictionary <int, Organization>();
            var qlist = q.ToList();

            foreach (var i in qlist)
            {
                db.SubmitChanges();
                i.om.Drop(db, CMSImageDataContext.Create(db.Host));
                db.SubmitChanges();
                i.pc.Pending        = false;
                i.pc.EnrollmentDate = DateTime.Now;
                db.SubmitChanges();
                list[i.pc.OrganizationId] = i.pc.Organization;
            }
            foreach (var o in list.Values)
            {
                if (o.PendingLoc.HasValue())
                {
                    o.Location   = o.PendingLoc;
                    o.PendingLoc = null;
                }
            }

            db.SubmitChanges();
        }
예제 #30
0
        private static void DoWork(OrgDrop model)
        {
            var db  = CMSDataContext.Create(model.Host);
            var idb = CMSImageDataContext.Create(model.Host);
            var cul = db.Setting("Culture", "en-US");

            Thread.CurrentThread.CurrentUICulture = new CultureInfo(cul);
            Thread.CurrentThread.CurrentCulture   = CultureInfo.CreateSpecificCulture(cul);

            LongRunningOperation lop = null;

            foreach (var pid in model.Pids)
            {
                var om = db.OrganizationMembers.Single(mm => mm.PeopleId == pid && mm.OrganizationId == model.filter.Id);
                if (model.DropDate.HasValue)
                {
                    om.Drop(db, idb, model.DropDate.Value);
                }
                else
                {
                    om.Drop(db, idb);
                }

                db.SubmitChanges();
                if (model.RemoveFromEnrollmentHistory)
                {
                    db.ExecuteCommand("DELETE dbo.EnrollmentTransaction WHERE PeopleId = {0} AND OrganizationId = {1}", pid, model.filter.Id);
                }

                lop = FetchLongRunningOperation(db, Op, model.QueryId);
                Debug.Assert(lop != null, "r != null");
                lop.Processed++;
                db.SubmitChanges();
                db.LogActivity($"Org{model.DisplayGroup} Drop{(model.RemoveFromEnrollmentHistory ? " w/history" : "")}", model.filter.Id, pid, uid: model.UserId);
            }
            // finished
            lop           = FetchLongRunningOperation(db, Op, model.QueryId);
            lop.Completed = DateTime.Now;
            db.SubmitChanges();
        }