コード例 #1
0
        public TicketData CreateTestData()
        {
            using (var context = new TicketingSystemDBContext())
            {
                JobType j = new JobType();
                j.JobName = "Miscellaneous";

                RecordRetriever rr      = new RecordRetriever();
                var             records = rr.RetrieveRecords(10);

                Users ticketWorker = context.Users.Where(u => u.FullName == "Test User").FirstOrDefault();
                Users entryAuthor  = context.Users.Where(w => w.FullName == "Test User").FirstOrDefault();

                TicketData td = new TicketData()
                {
                    TripNum        = -1,
                    StageNum       = "S01",
                    JobType        = j,
                    EntryAuthor    = entryAuthor,
                    EntryAuthorId  = entryAuthor.UserId,
                    TicketWorker   = ticketWorker,
                    TicketWorkerId = ticketWorker.UserId,
                    WorkerName     = "Test User",
                    StartTime      = "12:00",
                    EndTime        = "12:00",
                    StartDate      = DateTime.Today,
                    EndDate        = DateTime.Today,
                    Comments       = "Entry generated by HomeController.PostEntry unit test"
                };
                return(td);
            }
        }
コード例 #2
0
        /// <summary>
        /// Function to log changes in entries to the database
        /// </summary>
        /// <param name="action"></param>
        /// <param name="details"></param>
        /// <param name="entryID"></param>
        /// <param name="changedByUserID"></param>
        /// <returns></returns>
        public bool LogChange(string action, string details, int entryID, int changedByUserID)
        {
            try
            {
                using (var context = new TicketingSystemDBContext())
                {
                    TicketDataLog tdLog = new TicketDataLog()
                    {
                        ChangedByUserId = changedByUserID,
                        ChangeTime      = DateTime.Now,
                        DataAction      = action,
                        Details         = details,
                        EntryId         = entryID
                    };

                    context.TicketDataLog.Add(tdLog);
                    context.SaveChanges();
                }
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
            return(true);
        }
コード例 #3
0
        /// <summary>
        /// Updates the user in the database after creation in Auth0
        /// </summary>
        /// <param name="Auth0ID"></param>
        /// <returns>Boolean indicating success</returns>
        public static bool UpdateDBUser(string Auth0ID)
        {
            try
            {
                if (!ValidateToken())
                {
                    InitAPIToken();
                }

                using (var db = new TicketingSystemDBContext())
                {
                    //get the Auth0Id from Auth0
                    UserData ud = GetUserData(Auth0ID);

                    var u = db.Users.Where(uid => uid.Email == ud.email).FirstOrDefault();
                    u.Auth0Uid = ud.user_id;
                    db.SaveChanges();
                }
                return(true);
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
        }
コード例 #4
0
        /// <summary>
        /// Function to import new users from Auth0
        /// </summary>
        /// <returns></returns>
        public bool ImportUsersFromAuth0()
        {
            try
            {
                using (var db = new TicketingSystemDBContext())
                {
                    var users = Auth0APIClient.GetAllUsers();
                    foreach (var u in users)
                    {
                        if (!db.Users.Where(usr => usr.Email == u.email).Any())
                        {
                            string shiftType = Auth0APIClient.GetUserRole(u.user_id)[0].name;

                            Users newUser = new Users();
                            newUser.Auth0Uid  = u.user_id;
                            newUser.FullName  = u.name;
                            newUser.Email     = u.email;
                            newUser.ShiftType = shiftType;

                            CreateAndAddUser(newUser);
                        }
                    }
                }
                return(true);
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
        }
コード例 #5
0
        /// <summary>
        /// Function to update users in the database from Auth0
        /// </summary>
        /// <returns></returns>
        public bool UpdateUsersFromAuth0()
        {
            try
            {
                using (var db = new TicketingSystemDBContext())
                {
                    var users = Auth0APIClient.GetAllUsers();
                    foreach (var user in users)
                    {
                        Users dbuser = db.Users.Where(u => u.Auth0Uid == user.user_id).FirstOrDefault();
                        if (dbuser != null)
                        {
                            dbuser.Email    = user.email;
                            dbuser.FullName = user.name;
                            var roles = Auth0APIClient.GetUserRole(dbuser.Auth0Uid);

                            dbuser.ShiftType = roles.ElementAt(0).name;

                            db.Users.Update(dbuser);
                            db.SaveChanges();
                        }
                    }
                }
                return(true);
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
        }
コード例 #6
0
        public void GetUserByIDTest()
        {
            using (var db = new TicketingSystemDBContext())
            {
                int userId = db.Users.FirstOrDefault().UserId;
                var actual = um.GetUserByID(userId);

                Assert.IsNotNull(actual);
                Assert.AreEqual(userId, actual.UserId);
            }
        }
コード例 #7
0
        public void GetUsersTest()
        {
            var          actual = um.GetUsers();
            List <Users> expected;

            using (var db = new TicketingSystemDBContext())
            {
                expected = db.Users.ToList();
            }
            Assert.IsNotNull(actual);
        }
コード例 #8
0
        public static void Cleanup()
        {
            using (var db = new TicketingSystemDBContext())
            {
                Users user = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault();
                var   data = db.TicketData.Where(t => t.EntryAuthorId == user.UserId);

                db.TicketData.RemoveRange(data);
                db.SaveChanges();
            }
        }
コード例 #9
0
        public void UpdateDBUserTest()
        {
            using (var db = new TicketingSystemDBContext())
            {
                Users user   = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault();
                var   actual = Auth0APIClient.UpdateDBUser(user.Auth0Uid);

                Assert.IsNotNull(actual);
                Assert.IsTrue(actual);
            }
        }
コード例 #10
0
 public static TicketData GetTestData()
 {
     using (var db = new TicketingSystemDBContext())
     {
         Users      user = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault();
         TicketData td   = db.TicketData.Where(t => t.EntryAuthorId == user.UserId).FirstOrDefault();
         td.EntryAuthor  = user;
         td.TicketWorker = db.Users.Where(u => u.UserId == td.TicketWorkerId).FirstOrDefault();
         td.JobType      = db.JobType.Where(jt => jt.JobTypeId == td.JobTypeId).FirstOrDefault();
         return(td);
     }
 }
コード例 #11
0
        /// <summary>
        /// Posts the new ticket entry to the database
        /// </summary>
        /// <param name="td"></param>
        /// <param name="loggedInUser"></param>
        /// <returns></returns>
        public bool PostEntry(TicketData td, UserData loggedInUser)
        {
            try
            {
                using (var context = new TicketingSystemDBContext())
                {
                    IEnumerable<JobType> jobs = context.JobType;
                    int jtypeID = 1;

                    jtypeID = context.JobType.Where(j => j.JobName == td.JobType.JobName).FirstOrDefault().JobTypeId;
                    int authorID = context.Users.Where(a => a.Auth0Uid == loggedInUser.user_id).FirstOrDefault().UserId;

                    var worker = context.Users.Where(w => w.FullName == td.TicketWorker.FullName).FirstOrDefault();
                    int workerID;

                    if (worker != null)
                    {
                        workerID = worker.UserId;
                        td.TicketWorkerId = workerID;
                    }
                    else
                    {
                        throw new Exception("Error, Employee with name: " + worker.FullName + " not found in System");
                    }

                    td.JobTypeId = jtypeID;
                    td.TicketClosed = false;
                    td.EntryAuthorId = authorID;
                    td.WorkerName = td.TicketWorker.FullName;
                    td.StartDate = DateTime.Today;

                    //very important null assignment
                    td.JobType = null;
                    td.TicketWorker = null;
                    td.EntryAuthor = null;

                    context.TicketData.Add(td);
                    context.SaveChanges();

                    int entryID = td.EntryId;

                    TicketDataLogger tdl = new TicketDataLogger();
                    tdl.LogChange("new entry", "created new entry", entryID, authorID);

                }
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
            return true;
        }
コード例 #12
0
        public async Task PostEditorTest(TicketData td)
        {
            using (var db = new TicketingSystemDBContext())
            {
                ViewResult result = await ec.PostEdit(td);

                RecordRetriever rr       = new RecordRetriever();
                ViewResult      testView = View("Index", rr.RetrieveRecords(10));

                Assert.IsNotNull(result);
                Assert.AreEqual(testView.ViewName, result.ViewName);
            }
        }
コード例 #13
0
 /// <summary>
 /// Get a database user given their full name
 /// </summary>
 /// <param name="name"></param>
 /// <returns></returns>
 public static Users GetUserByName(string name)
 {
     try
     {
         using (var db = new TicketingSystemDBContext())
         {
             return(db.Users.Where(u => u.FullName == name).First());
         }
     }
     catch (Exception e)
     {
         throw new HttpResponseException(Utility.CreateResponseMessage(e));
     }
 }
コード例 #14
0
 /// <summary>
 /// Function to return all of the users in the database
 /// </summary>
 /// <returns></returns>
 public IEnumerable <Users> GetUsers()
 {
     try
     {
         using (var db = new TicketingSystemDBContext())
         {
             return(db.Users.ToList());
         }
     }
     catch (Exception e)
     {
         throw new HttpResponseException(Utility.CreateResponseMessage(e));
     }
 }
コード例 #15
0
 /// <summary>
 /// Gets the user with the given ID
 /// </summary>
 /// <param name="userID"></param>
 /// <returns></returns>
 public Users GetUserByID(int userID)
 {
     try
     {
         using (var db = new TicketingSystemDBContext())
         {
             return(db.Users.Find(userID));
         }
     }
     catch (Exception e)
     {
         throw new HttpResponseException(Utility.CreateResponseMessage(e));
     }
 }
コード例 #16
0
        /// <summary>
        /// Posts the edited TicketData object to the database and logs the user who triggered it
        /// </summary>
        /// <param name="td">The ticket data instance to update</param>
        /// <param name="loggedInUser">The currently logged user</param>
        /// <returns></returns>
        public bool PostEditor(TicketData td, UserData loggedInUser)
        {
            try
            {
                using (var context = new TicketingSystemDBContext())
                {
                    int jtypeID;
                    jtypeID = context.JobType.Where(j => j.JobName == td.JobType.JobName).FirstOrDefault().JobTypeId;

                    int authorID = -1;
                    int workerID;

                    var author = context.Users.Where(a => a.Auth0Uid == loggedInUser.user_id).FirstOrDefault();
                    var worker = context.Users.Where(w => w.FullName == td.TicketWorker.FullName).FirstOrDefault();

                    if (author != null)
                    {
                        authorID         = author.UserId;
                        td.EntryAuthorId = authorID;
                    }

                    if (worker != null)
                    {
                        workerID          = worker.UserId;
                        td.TicketWorkerId = workerID;
                    }

                    td.JobTypeId  = jtypeID;
                    td.WorkerName = td.TicketWorker.FullName;

                    //very important null assignment
                    td.JobType      = null;
                    td.TicketWorker = null;
                    td.EntryAuthor  = null;

                    context.TicketData.Update(td);
                    context.SaveChanges();

                    TicketDataLogger tdl = new TicketDataLogger();
                    tdl.LogChange("new edits", "edited entry", td.EntryId, authorID);
                }
            }

            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
            return(true);
        }
コード例 #17
0
 public void GetRecordByIDTest()
 {
     using (var context = new TicketingSystemDBContext())
     {
         var       td     = TestUtility.CreateTestData();
         DataEntry de     = new DataEntry();
         Users     dbUser = context.Users.Where(u => u.FullName == "Test User").FirstOrDefault();
         de.PostEntry(td, Auth0APIClient.GetUserData(dbUser.Auth0Uid));
         int             id  = context.TicketData.First().EntryId;
         RecordRetriever rr  = new RecordRetriever();
         var             res = rr.GetRecordByID(id);
         Assert.IsNotNull(res);
         Assert.IsTrue(res.GetType() == typeof(TicketData));
     }
 }
コード例 #18
0
        public void LogChangeTest()
        {
            TicketDataLogger tdl = new TicketDataLogger();
            string           action = "LogChangeTest", details = "Entry generated by TicketDataLogger.LogChange unit test";

            using (var context = new TicketingSystemDBContext())
            {
                var data = context.TicketData.FirstOrDefault();
                var user = context.Users.First();
                if (data != null)
                {
                    Assert.IsTrue(tdl.LogChange(action, details, data.EntryId, user.UserId));
                }
            }
        }
コード例 #19
0
        /// <summary>
        /// Gets the TicketData entry based on Entry ID of ticket clicked on in HomePage table
        /// </summary>
        /// <param name="entryID">Entry ID specified in HomePage table</param>
        /// <returns>JSON containing redirect URL</returns>
        public async Task <JsonResult> OpenEntry(string entryID)
        {
            try
            {
                Authorize();
            }
            catch (HttpResponseException e)
            {
                return(Json(new
                {
                    newUrl = Url.Action("Error", Utility.CreateHttpErrorView(e, "401 Unauthorized"))
                }));
            }
            try
            {
                using (var context = new TicketingSystemDBContext())
                {
                    int             id = int.Parse(entryID);
                    RecordRetriever rr = new RecordRetriever();
                    TicketData      td = rr.GetRecordByID(id);


                    return(Json(new
                    {
                        newUrl = Url.Action("EntryClose", "Home", td)
                    }));
                }
            }
            catch (HttpResponseException e)
            {
                string guid = ExceptionReporter.DumpException(e);
                ServerErrorViewModel error = await Utility.CreateServerErrorView(e);

                return(Json(new
                {
                    newUrl = Url.Action("ServerError", error)
                }));
            }
            catch (Exception e)
            {
                string guid = ExceptionReporter.DumpException(e);
                return(Json(new
                {
                    newUrl = Url.Action("Error", Utility.CreateBasicExceptionView(e, guid))
                }));
            }
        }
コード例 #20
0
        public void PostEditTest()
        {
            using (var context = new TicketingSystemDBContext())
            {
                TicketData td = TestUtility.CreateTestData();

                DataEditor DaEd   = new DataEditor();
                Users      dbUser = context.Users.Where(u => u.FullName == "Test User").FirstOrDefault();
                UserData   ud     = Auth0APIClient.GetUserData(dbUser.Auth0Uid);

                var result = DaEd.PostEditor(td, ud);

                DeleteEntryTest(td, ud);

                Assert.IsTrue(result);
            }
        }
コード例 #21
0
        public void CreateUserTest()
        {
            using (var db = new TicketingSystemDBContext())
            {
                Users newUser = TestUtility.CreateTestUser();

                Users    loggedUser = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault();
                UserData userData   = Auth0APIClient.GetUserData(loggedUser.Auth0Uid);

                bool actual = um.CreateUser(newUser, userData);

                ToggleActivationTest(newUser);
                DeleteUserTest(newUser);

                Assert.IsTrue(actual);
            }
        }
コード例 #22
0
 /// <summary>
 /// Function to delete a user from the Database
 /// </summary>
 /// <param name="UserId"></param>
 /// <returns></returns>
 public bool DeleteUser(int UserId)
 {
     try
     {
         using (var db = new TicketingSystemDBContext())
         {
             Users user = db.Users.Find(UserId);
             db.Users.Remove(user);
             db.SaveChanges();
             return(true);
         }
     }
     catch (Exception e)
     {
         throw new HttpResponseException(Utility.CreateResponseMessage(e));
     }
 }
コード例 #23
0
        /// <summary>
        /// Gets the TicketData entry based on the entryID input in Index page
        /// </summary>
        /// <param name="entryId">Entry ID input from index</param>
        /// <returns>JSON holding redirect URL</returns>
        public async Task <JsonResult> GetRecord(string entryId)
        {
            try
            {
                Authorize();
            }
            catch (HttpResponseException e)
            {
                return(Json(new
                {
                    newUrl = Url.Action("Error", "Edit", Utility.CreateHttpErrorView(e, "You do not have the permissions to view this page"))
                }));
            }
            try
            {
                using (var context = new TicketingSystemDBContext())
                {
                    RecordRetriever rr     = new RecordRetriever();
                    var             result = rr.GetRecordByID(int.Parse(entryId));

                    return(Json(new
                    {
                        newUrl = Url.Action("EditForm", "Edit", result)
                    }));
                }
            }
            catch (HttpResponseException e)
            {
                string guid = ExceptionReporter.DumpException(e);
                ServerErrorViewModel error = await Utility.CreateServerErrorView(e);

                return(Json(new
                {
                    newUrl = Url.Action("ServerError", error)
                }));
            }
            catch (Exception e)
            {
                string guid = ExceptionReporter.DumpException(e);
                return(Json(new
                {
                    newUrl = Url.Action("Error", Utility.CreateBasicExceptionView(e, guid))
                }));
            }
        }
コード例 #24
0
 /// <summary>
 /// Get the record with the given entryID
 /// </summary>
 /// <param name="entryID"></param>
 /// <returns></returns>
 public TicketData GetRecordByID(int entryID)
 {
     try
     {
         using (var context = new TicketingSystemDBContext())
         {
             TicketData td = context.TicketData.Find(entryID);
             td.JobType      = context.JobType.Find(td.JobTypeId);
             td.EntryAuthor  = context.Users.Find(td.EntryAuthorId);
             td.TicketWorker = context.Users.Find(td.TicketWorkerId);
             return(td);
         }
     }
     catch (Exception e)
     {
         throw new HttpResponseException(Utility.CreateResponseMessage(e));
     }
 }
コード例 #25
0
        /// <summary>
        /// Closes the specified ticket data entry
        /// </summary>
        /// <param name="td"></param>
        /// <returns></returns>
        public bool CloseTicket(TicketData td)
        {
            try
            {
                using (var context = new TicketingSystemDBContext())
                {
                 
                    context.TicketData.Find(td.EntryId).TicketClosed = true;
                    context.TicketData.Find(td.EntryId).EndTime = td.EndTime;
                    context.TicketData.Find(td.EntryId).EndDate = td.EndDate;

                    context.SaveChanges();
                }
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
            return true;
        }
コード例 #26
0
        //Not supported due to management API restrictions

        //public bool UpdateUser(Users user)
        //{
        //    try
        //    {
        //        using (var db = new TicketingSystemDBContext())
        //        {
        //            Users oldUser = db.Users.Find(user.UserId);
        //            string oldShiftType = oldUser.ShiftType;
        //            oldUser.Email = user.Email;
        //            oldUser.FullName = user.FullName;
        //            oldUser.ShiftType = user.ShiftType;
        //            db.Users.Update(oldUser);
        //            db.SaveChanges();

        //            //  Auth0APIClient.UpdateUser(oldUser);
        //            Auth0APIClient.UpdateRole(oldUser.Auth0Uid, oldShiftType, user.ShiftType);
        //        }
        //    }
        //    catch (Exception e)
        //    {
        //        throw new HttpResponseException(Utility.CreateResponseMessage(e));
        //    }
        //    return true;
        //}

        /// <summary>
        /// Function to delete a user from DB and Auth0
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        public bool ToggleActivation(int UserId)
        {
            try
            {
                using (var db = new TicketingSystemDBContext())
                {
                    Users  user    = db.Users.Find(UserId);
                    string auth0ID = user.Auth0Uid;
                    user.IsActive = !user.IsActive;
                    db.Users.Update(user);
                    db.SaveChanges();

                    return(true);
                }
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
        }
コード例 #27
0
        /// <summary>
        /// Get a list of names of users who are in the system
        /// </summary>
        /// <returns></returns>
        public static List <string> GetValidNames()
        {
            List <string> userNames = new List <string>();

            try
            {
                using (var db = new TicketingSystemDBContext())
                {
                    var users = db.Users.ToList();
                    foreach (Users u in users)
                    {
                        userNames.Add(u.FullName);
                    }
                }
                return(userNames);
            }
            catch (Exception e)
            {
                throw new HttpResponseException(Utility.CreateResponseMessage(e));
            }
        }
コード例 #28
0
        public async Task EditFormTest()
        {
            using (var db = new TicketingSystemDBContext())
            {
                Users user = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault();

                DataEntry de = new DataEntry();
                de.PostEntry(TestUtility.CreateTestData(), Auth0APIClient.GetUserData(user.Auth0Uid));

                TicketData td = db.TicketData.Where(t => t.EntryAuthorId == user.UserId).FirstOrDefault();
                td.JobType = db.JobType.Where(jt => jt.JobTypeId == td.JobTypeId).FirstOrDefault();

                ViewResult result = await ec.EditForm(td);

                ViewResult testView = View("EditForm", td);

                await PostEditorTest(td);

                Assert.IsNotNull(result);
                Assert.AreEqual(testView.ViewName, result.ViewName);
            }
        }
コード例 #29
0
        public EditControllerTests()
        {
            Users dbUser;

            using (var db = new TicketingSystemDBContext())
            {
                dbUser = db.Users.Where(u => u.FullName == "Test User").First();
            }
            var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, dbUser.Auth0Uid)
            }, "mock"));

            ec = new EditController();
            ec.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext
                {
                    User = user
                }
            };
        }
コード例 #30
0
        public static void UserCleanup()
        {
            UserManager um = new UserManager();

            using (var db = new TicketingSystemDBContext())
            {
                var dbUsers = db.Users.Where(u => u.FullName == "Unit Test User").ToList();
                foreach (Users u in dbUsers)
                {
                    um.DeleteUser(u.UserId);
                }

                var auth0Users = Auth0APIClient.GetAllUsers();
                foreach (var u in auth0Users)
                {
                    if (u.name == "Unit Test User")
                    {
                        Auth0APIClient.DeleteUser(u.user_id);
                    }
                }
            }
        }