예제 #1
0
        public ActionResult AvatarPost(int id)
        {
            if (Request.Files.Count != 1)
            {
                using (var db = new TrackerDataContext())
                {
                    var user = db.User.GetByKey(id);
                    ModelState.AddModelError("file", "Must select a file to upload.");
                    return(View("Edit", GetData(user)));
                }
            }

            var file   = Request.Files[0];
            var buffer = new byte[file.ContentLength];

            file.InputStream.Read(buffer, 0, buffer.Length);

            using (var db = new TrackerDataContext())
            {
                var user = db.User.GetByKey(id);
                user.Avatar     = new Binary(buffer);
                user.AvatarType = file.ContentType;
                db.SubmitChanges();

                var audit = new Audit(db.LastAudit);
                audit.User = user;
                db.Audit.InsertOnSubmit(audit);
                db.SubmitChanges();
            }

            return(RedirectToAction("Edit", new { id = id }));
        }
예제 #2
0
        public void Self()
        {
            int parentId;

            using (var db = new TrackerDataContext())
            {
                var parent = new Self {
                    Name = "Parent"
                };
                db.Self.InsertOnSubmit(parent);
                db.SubmitChanges();

                parentId = parent.Id;

                var child = new Self {
                    Name = "Child", MySelf = parent
                };
                db.Self.InsertOnSubmit(child);
                db.SubmitChanges();
            }

            using (var db = new TrackerDataContext())
            {
                var child = db.Self
                            .ByName("Child")
                            .FirstOrDefault();

                Assert.AreEqual(parentId, child.MySelf.Id);

                db.Self.DeleteOnSubmit(child);
                db.Self.DeleteOnSubmit(child.MySelf);
                db.SubmitChanges();
            }
        }
예제 #3
0
        public ActionResult Create([Bind(Exclude = "Id")] Task task)
        {
            try
            {
                using (var db = new TrackerDataContext())
                {
                    db.Task.InsertOnSubmit(task);
                    db.SubmitChanges();

                    var audit = new Audit(db.LastAudit);
                    audit.Task = task;
                    db.Audit.InsertOnSubmit(audit);
                    db.SubmitChanges();
                }
                return(RedirectToAction("Edit", new { id = task.Id }));
            }
            catch (BrokenRuleException e)
            {
                foreach (BrokenRule rule in e.BrokenRules)
                {
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                }
                return(View(GetData()));
            }
        }
예제 #4
0
        public ActionResult EditPost(int id)
        {
            Task task = null;

            try
            {
                using (var db = new TrackerDataContext())
                {
                    var options = new DataLoadOptions();
                    options.LoadWith <Task>(t => t.CreatedUser);
                    db.LoadOptions = options;

                    task = db.Task.GetByKey(id);
                    UpdateModel(task);
                    db.SubmitChanges();

                    var audit = new Audit(db.LastAudit);
                    audit.Task = task;
                    db.Audit.InsertOnSubmit(audit);
                    db.SubmitChanges();
                }

                return(RedirectToAction("Edit", new { id = task.Id }));
            }
            catch (BrokenRuleException e)
            {
                foreach (BrokenRule rule in e.BrokenRules)
                {
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                }
                task.Detach();
                return(View(GetData(task)));
            }
        }
예제 #5
0
        public long Update(long managerId, string name, string login, string email)
        {
            var entity = _context.Managers.First(x => x.Id == managerId);

            entity.Name       = name;
            entity.User.Login = login;
            entity.Email      = email;

            _context.SubmitChanges();

            return(entity.UserId);
        }
예제 #6
0
        public ActionResult UserEdit(int id)
        {
            User user         = null;
            var  userViewData = new UserViewData();

            try
            {
                using (var db = new TrackerDataContext())
                {
                    var options = new DataLoadOptions();
                    options.LoadWith <Data.User>(u => u.UserRoleList);
                    options.LoadWith <Data.UserRole>(u => u.Role);
                    db.LoadOptions = options;

                    user = db.User.GetByKey(id);
                    UpdateModel(user);

                    if (!db.GetChangeSet().Updates.Contains(user))
                    {
                        var ruleManager = new RuleManager();
                        ruleManager.Run(user);

                        if (ruleManager.BrokenRules.Count > 0)
                        {
                            throw new BrokenRuleException(ruleManager.BrokenRules);
                        }
                    }

                    db.SubmitChanges();

                    var audit = new Audit(db.LastAudit);
                    audit.User = user;
                    db.Audit.InsertOnSubmit(audit);
                    db.SubmitChanges();
                }
                return(RedirectToAction("Edit", new { id = id }));
            }
            catch (BrokenRuleException e)
            {
                if (user != null)
                {
                    user.Detach();
                }

                foreach (BrokenRule rule in e.BrokenRules)
                {
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                }
                return(View(GetData(user)));
            }
        }
예제 #7
0
        public void TestFixtureSetUp()
        {
            // setup memcached
            _memcached = Process.Start(
                @"..\..\..\..\Libraries\memcached.exe",
                "-vv -p 11200");

            using (var db = new TrackerDataContext())
            {
                var role1 = new Role
                {
                    Name = "Test Role"
                };
                var role2 = new Role
                {
                    Name = "Duck Roll"
                };

                db.Role.InsertOnSubmit(role1);
                db.Role.InsertOnSubmit(role2);
                db.SubmitChanges();

                _roleIds.Add(role1.Id);
                _roleIds.Add(role2.Id);
            }
        }
예제 #8
0
        public void TestFixtureSetUp()
        {
            using (var db = new TrackerDataContext())
            {
                var oldUser = db.User
                              .ByEmailAddress("*****@*****.**")
                              .FirstOrDefault();
                if (oldUser != null)
                {
                    db.User.DeleteOnSubmit(oldUser);
                }

                var oldRole = db.Role
                              .ByName("Tester")
                              .FirstOrDefault();
                if (oldRole != null)
                {
                    db.Role.DeleteOnSubmit(oldRole);
                }

                if (oldUser != null || oldRole != null)
                {
                    db.SubmitChanges();
                }
            }
        }
예제 #9
0
        public void Test_Create()
        {
            var broker          = _db.Brokers.First();
            var sender          = _db.Senders.First();
            var applicationData = _db.Applications.First(x => !x.AirWaybillId.HasValue);

            var count = _db.AirWaybills.Count();

            var model = _fixture
                        .Build <AwbAdminModel>()
                        .Without(x => x.GTD)
                        .With(x => x.BrokerId, broker.Id)
                        .With(x => x.SenderUserId, sender.UserId)
                        .With(x => x.DateOfArrivalLocalString, LocalizationHelper.GetDate(DateTimeProvider.Now, _currentCulture))
                        .With(x => x.DateOfDepartureLocalString, LocalizationHelper.GetDate(DateTimeProvider.Now, _currentCulture))
                        .Create();

            _controller.Create(applicationData.Id, model);

            var entity = _db.AirWaybills.Skip(count).Take(1).First();

            Validate(model, entity.Id);

            _db.Refresh(RefreshMode.OverwriteCurrentValues, applicationData);
            Assert.AreEqual(FirstStateId, applicationData.StateId);

            applicationData.AirWaybillId = null;
            _db.AirWaybills.DeleteOnSubmit(entity);
            _db.SubmitChanges();
        }
예제 #10
0
        public void TestFixtureSetUp()
        {
            using (var db = new TrackerDataContext {
                Log = Console.Out
            })
            {
                db.Guid.InsertOnSubmit(new Core.Data.Guid
                {
                    Id          = _guid1Id,
                    AlternateId = null
                });
                db.Guid.InsertOnSubmit(new Core.Data.Guid
                {
                    Id          = _guid2Id,
                    AlternateId = _guid2Alt
                });
                db.Guid.InsertOnSubmit(new Core.Data.Guid
                {
                    Id          = _guid3Id,
                    AlternateId = _guid3Alt
                });

                db.SubmitChanges();
            }
        }
예제 #11
0
        public void ManyToMany()
        {
            using (var db = new TrackerDataContext())
            {
                var user = db.User.GetByKey(UserId);
                Assert.AreEqual(1, user.RoleList.Count);

                var role = db.Role.GetByKey(RoleId);
                user.RoleList.Remove(role);

                db.SubmitChanges();
                Assert.AreEqual(0, user.RoleList.Count);
            }

            using (var db = new TrackerDataContext())
            {
                var user = db.User.GetByKey(UserId);
                Assert.AreEqual(0, user.RoleList.Count);

                var role = db.Role.GetByKey(RoleId);
                user.RoleList.Add(role);

                db.SubmitChanges();
                Assert.AreEqual(1, user.RoleList.Count);
            }

            using (var db = new TrackerDataContext())
            {
                var user = db.User.GetByKey(UserId);
                Assert.AreEqual(1, user.RoleList.Count);
            }
        }
예제 #12
0
        public void ManyToOneAndOneToMany()
        {
            int taskId;

            using (var db = new TrackerDataContext())
            {
                var priority = db.Priority.GetByKey(Priority.High);
                var status   = db.Status.GetByKey(Status.Completed);
                var user     = db.User.GetByKey(UserId);

                var task = new Task
                {
                    CompleteDate = DateTime.Now,
                    CreatedDate  = DateTime.Now,
                    Details      = "Test'n",
                    DueDate      = DateTime.Now,
                    ModifiedDate = DateTime.Now,
                    Priority     = priority,
                    StartDate    = DateTime.Now,
                    Status       = status,
                    Summary      = "Test'n",
                    UserCreated  = user
                };
                db.Task.InsertOnSubmit(task);
                db.SubmitChanges();

                taskId = task.Id;
            }

            using (var db = new TrackerDataContext())
            {
                var user = db.User.GetByKey(UserId);

                Assert.AreEqual(0, user.TaskAssignedList.Count);
                Assert.AreEqual(1, user.TaskCreatedList.Count);

                var task = user.TaskCreatedList.First();
                user.TaskAssignedList.Add(task);
                db.SubmitChanges();

                Assert.AreEqual(1, user.TaskAssignedList.Count);
            }

            using (var db = new TrackerDataContext())
            {
                var task = db.Task.GetByKey(taskId);
                db.Task.DeleteOnSubmit(task);
                db.SubmitChanges();

                var user = db.User.GetByKey(UserId);

                Assert.AreEqual(0, user.TaskAssignedList.Count);
                Assert.AreEqual(0, user.TaskCreatedList.Count);
            }
        }
예제 #13
0
 public ActionResult RemoveAvatar(int id)
 {
     using (var db = new TrackerDataContext())
     {
         var user = db.User.GetByKey(id);
         user.AvatarType = null;
         user.Avatar     = null;
         db.SubmitChanges();
     }
     return(RedirectToAction("Edit", new { id = id }));
 }
예제 #14
0
 public void Test_Enum()
 {
     using (var db = new TrackerDataContext {
         Log = Console.Out
     })
     {
         var task = db.Task.GetByKey(TaskId);
         task.Priority = Priority.High;
         db.SubmitChanges();
     }
 }
예제 #15
0
 public void Test_Many_To_Many()
 {
     using (var db = new TrackerDataContext {
         Log = Console.Out
     })
     {
         User u = db.User.GetByKey(SpockId);
         Role r = db.Role.ByName("Manager").First();
         u.RoleList.Add(r);
         db.SubmitChanges();
     }
 }
예제 #16
0
 public void Test_Entity_Clone()
 {
     using (var db = new TrackerDataContext {
         Log = Console.Out
     })
     {
         var  u        = db.Task.GetByKey(TaskId);
         Task taskCopy = u.Clone();
         taskCopy.Id = 0;
         db.Task.InsertOnSubmit(taskCopy);
         db.SubmitChanges();
     }
 }
예제 #17
0
        public ActionResult AddRole(int userId, int roleId)
        {
            using (var db = new TrackerDataContext())
            {
                var options = new DataLoadOptions();
                options.LoadWith <User>(u => u.UserRoleList);

                var user = db.User.GetByKey(userId);
                var role = db.Role.GetByKey(roleId);
                user.RoleList.Add(role);
                db.SubmitChanges();
            }
            return(RedirectToAction("Edit", new { id = userId }));
        }
예제 #18
0
        public void Test_SetAirWaybill()
        {
            var application = _db.Applications.First(x => !x.AirWaybillId.HasValue);
            var airWaybill  = _db.AirWaybills.First();

            _controller.SetAirWaybill(application.Id, airWaybill.Id);

            _db.Refresh(RefreshMode.OverwriteCurrentValues, application);

            Assert.AreEqual(airWaybill.Id, application.AirWaybillId);

            application.AirWaybillId = null;

            _db.SubmitChanges();
        }
예제 #19
0
        //[Ignore]
        public void ManyToMany()
        {
            var db = new TrackerDataContext {
                Log = Console.Out
            };

            var user = db.User.GetByKey(1);

            user.RoleList.Add(db.Role.GetByKey(1));
            user.RoleList.Add(db.Role.GetByKey(2));

            db.SubmitChanges();

            var userRole = user.UserRoleList.FirstOrDefault(u => u.RoleId == 1);

            db.UserRole.DeleteOnSubmit(userRole);

            user.RoleList.Remove(db.Role.GetByKey(1));
            user.RoleList.Remove(db.Role.GetByKey(2));

            var changes = db.GetChangeSet();

            db.SubmitChanges();
        }
예제 #20
0
        public ActionResult CopyTask(int id)
        {
            Task copiedTask = null;

            using (var db = new TrackerDataContext())
            {
                Task task = db.Task.GetByKey(id);
                copiedTask             = task.Clone();
                copiedTask.Id          = 0;
                copiedTask.CreatedUser = db.User.GetByEmailAddress(System.Web.HttpContext.Current.User.Identity.Name);
                db.Task.InsertOnSubmit(copiedTask);
                db.SubmitChanges();
            }

            return(RedirectToAction("Edit", new { id = copiedTask.Id }));
        }
예제 #21
0
        public ActionResult RemoveRole(int userId, int roleId)
        {
            using (var db = new TrackerDataContext())
            {
                var options = new DataLoadOptions();
                options.LoadWith <User>(u => u.UserRoleList);
                options.LoadWith <UserRole>(r => r.Role);
                db.LoadOptions = options;

                var user = db.User.GetByKey(userId);
                var role = user.RoleList.FirstOrDefault(r => r.Id == roleId);

                user.RoleList.Remove(role);
                db.SubmitChanges();
            }
            return(RedirectToAction("Edit", new { id = userId }));
        }
예제 #22
0
        public void TearDown()
        {
            using (var db = new TrackerDataContext())
            {
                var user = db.User.GetByKey(UserId);
                if (user != null)
                {
                    db.User.DeleteOnSubmit(user);
                }

                var role = db.Role.GetByKey(RoleId);
                if (role != null)
                {
                    db.Role.DeleteOnSubmit(role);
                }

                db.SubmitChanges();
            }
        }
예제 #23
0
        private void CreateTask(int userId)
        {
            var task = new Task()
            {
                AssignedId = userId,
                Status     = Status.InProgress,
                Summary    = "Explain the visions that inspire you",
                Priority   = Priority.High,
                CreatedId  = userId,
            };

            using (var db = new TrackerDataContext {
                Log = Console.Out
            })
            {
                db.Task.InsertOnSubmit(task);
                db.SubmitChanges();
                TaskId = task.Id;
            }
        }
예제 #24
0
        public void Test_Auditing()
        {
            using (var db = new TrackerDataContext {
                Log = Console.Out
            })
            {
                var user = db.User.GetByKey(SpockId);
                user.Comment = "I love my mom, but I hate Winona Ryder.";

                var task = new Task()
                {
                    AssignedId = SpockId,
                    CreatedId  = SpockId,
                    Status     = Status.NotStarted,
                    Priority   = Priority.High,
                    Summary    = "Punch Kirk in the face!"
                };
                db.Task.InsertOnSubmit(task);
                db.SubmitChanges();
                Console.Write(db.LastAudit.ToXml());
            }
        }
예제 #25
0
        public void Test_Entity_Detach()
        {
            Task task = null;

            using (var db = new TrackerDataContext {
                Log = Console.Out
            })
            {
                task = db.Task.GetByKey(TaskId);
                task.Detach();
            }

            task.Status = Status.Done;

            using (var context2 = new TrackerDataContext())
            {
                context2.Log = Console.Out;

                context2.Task.Attach(task, true);
                context2.SubmitChanges();
            }
        }
예제 #26
0
        public void SetUp()
        {
            using (var db = new TrackerDataContext())
            {
                var user = new User
                {
                    EmailAddress = "*****@*****.**",
                    FirstName    = "Testie",
                    LastName     = "McTester",
                    PasswordHash =
                        "aM/Vndh7cYd3Mxq7msArjl9YU8zoR6fF+sVTSUCcsJi2bx+cwOI0/Bkr5hfq9vYfTe3/rlgPpSMg108acpw+qA",
                    PasswordSalt           = "=Unc%",
                    IsApproved             = true,
                    CreatedDate            = DateTime.Now,
                    ModifiedDate           = DateTime.Now,
                    LastActivityDate       = DateTime.Now,
                    LastLoginDate          = DateTime.Now,
                    LastPasswordChangeDate = DateTime.Now,
                    RoleList = new List <Role>()
                };

                db.User.InsertOnSubmit(user);

                var role = new Role
                {
                    Name         = "Tester",
                    Description  = "Does testing.",
                    CreatedDate  = DateTime.Now,
                    ModifiedDate = DateTime.Now
                };
                db.Role.InsertOnSubmit(role);

                user.RoleList.Add(role);
                db.SubmitChanges();

                UserId = user.Id;
                RoleId = role.Id;
            }
        }
예제 #27
0
        public void Test_Entity_Detach_Update()
        {
            Task task = null;

            using (var db = new TrackerDataContext {
                Log = Console.Out
            })
            {
                task = db.Task.GetByKey(TaskId);
                task.Detach();
            }

            using (var context2 = new TrackerDataContext())
            {
                context2.Log = Console.Out;
                // attach, then update properties
                context2.Task.Attach(task);
                task.Status = Status.Done;

                context2.SubmitChanges();
            }
        }
예제 #28
0
        public void ObjectTrackingEnabled()
        {
            using (var db = new TrackerDataContext {
                ObjectTrackingEnabled = false
            })
            {
                var user = db.User
                           .ByFirstName("Testie")
                           .FirstOrDefault();

                Assert.IsNotNull(user);

                try
                {
                    db.SubmitChanges();
                }
                catch (Exception ex)
                {
                    Assert.IsTrue(ex.Message.Contains("ObjectTrackingEnabled"));
                }
            }
        }
예제 #29
0
        public ActionResult Create(string emailAddress, string password, string confirmPassword)
        {
            try
            {
                if (confirmPassword == password)
                {
                    MembershipCreateStatus createStatus = MembershipService.CreateUser(emailAddress, password, emailAddress);
                    if (createStatus == MembershipCreateStatus.Success)
                    {
                        using (var db = new TrackerDataContext())
                        {
                            var user = db.User.GetByEmailAddress(emailAddress);
                            TryUpdateModel(user, null, null, new string[] { "FirstName, LastName" });
                            db.SubmitChanges();
                            return(RedirectToAction("Edit", new { id = user.Id }));
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("_FORM", UIHelper.ErrorCodeToString(createStatus));
                    }

                    return(View());
                }
                else
                {
                    ModelState.AddModelError("Password", "Passwords must match");
                    return(View());
                }
            }
            catch (BrokenRuleException e)
            {
                foreach (BrokenRule rule in e.BrokenRules)
                {
                    ModelState.AddModelError(rule.Context.Rule.TargetProperty, rule.Message);
                }
                return(View());
            }
        }
예제 #30
0
        public void TestFixtureSetUp()
        {
            using (var db = new TrackerDataContext {
                Log = Console.Out
            })
            {
                var role1 = new Role
                {
                    Name = "Test Role"
                };
                var role2 = new Role
                {
                    Name = "Duck Roll"
                };

                db.Role.InsertOnSubmit(role1);
                db.Role.InsertOnSubmit(role2);
                db.SubmitChanges();

                _roleIds.Add(role1.Id);
                _roleIds.Add(role2.Id);
            }
        }