Esempio n. 1
0
        /// <summary>
        /// deletes criterions by criterionId
        /// </summary>
        /// <param name="criterionIdList">list of criteria</param>
        /// <param name="userId">user who is performing this operation</param>
        public static void DeleteCriterions(List <int> criterionIdList, int userId)
        {
            Criterion             crit;
            ApplicationDBEntities ctx = new ApplicationDBEntities();

            if (criterionIdList == null || criterionIdList.Count == 0)
            {
                return;
            }

            foreach (int id in criterionIdList)
            {
                crit = ctx.Criterion.Find(id);
                ctx.Criterion.Remove(crit);
                ctx.Entry(crit).State = EntityState.Deleted;
                ctx.SaveChanges();

                //changes to historytable
                HCriterion hcrit = new HCriterion();
                hcrit.ChangeDate  = DateTime.Now;
                hcrit.CriterionId = id;
                hcrit.UserId      = userId;
                hcrit.Action      = "criterion deleted (" + crit.Name + ")";
                hcrit.Name        = crit.Name;
                hcrit.Description = crit.Description;
                hcrit.Issue       = crit.Issue;
                hcrit.Weight      = crit.Weight;
                hcrit.WeightPC    = crit.WeightPC;
                ctx.HCriterion.Add(hcrit);
                ctx.Entry(hcrit).State = EntityState.Added;
                ctx.SaveChanges();
            }

            ctx.Dispose();
        }
Esempio n. 2
0
        /// <summary>
        /// saves user review for issue
        /// </summary>
        /// <param name="review"></param>
        public static void SaveIssueReview(Review review)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            HReview hreview           = ctx.HReview.Create();

            hreview.ChangeDate = DateTime.Now;
            hreview.IssueId    = review.IssueId;
            hreview.UserId     = review.UserId;

            if (ctx.Review.Where(x => x.IssueId == review.IssueId && x.UserId == review.UserId).Count() > 0)
            {
                hreview.Action = "Review updated";
                Review dbReview = ctx.Review.Where(x => x.IssueId == review.IssueId && x.UserId == review.UserId).FirstOrDefault();
                dbReview.Rating           = review.Rating;
                dbReview.Explanation      = review.Explanation;
                ctx.Entry(dbReview).State = System.Data.Entity.EntityState.Modified;
            }
            else
            {
                hreview.Action = "Review added";
                ctx.Review.Add(review);
                ctx.Entry(review).State = System.Data.Entity.EntityState.Added;
            }

            ctx.HReview.Add(hreview);
            ctx.Entry(hreview).State = System.Data.Entity.EntityState.Added;
            ctx.SaveChanges();

            ctx.Dispose();
        }
Esempio n. 3
0
        /// <summary>
        /// returns root issues
        /// </summary>
        /// <returns>root issue of an child issue</returns>
        public static List <Issue> RootIssues(int?issueId, ApplicationDBEntities ctx)
        {
            List <Issue> parentList = new List <Issue>();

            if (issueId == -1)
            {
                return(parentList);
            }
            int?parent = ctx.Issue.Where(x => x.Id == issueId).FirstOrDefault().Parent;

            if (parent == null)
            {
                return(parentList);
            }
            else
            {
                Issue parentIssue = ctx.Issue.AsNoTracking().Where(x => x.Id == issueId).FirstOrDefault();
                parentList.Add(parentIssue);
                List <Issue> recIssues = RootIssues(parentIssue.Parent, ctx);
                if (recIssues != null)
                {
                    parentList.AddRange(recIssues);
                }
            }

            return(parentList);
        }
Esempio n. 4
0
        /// <summary>
        /// registers a user to the system
        /// </summary>
        /// <param name="email"></param>
        /// <param name="firstName"></param>
        /// <param name="lastName"></param>
        /// <param name="password"></param>
        /// <param name="secretQuestion"></param>
        /// <param name="answer"></param>
        /// <param name="stakeholderDescrip"></param>
        /// <returns>positive user-id if user is created</returns>
        public static bool Register(string email, string firstName, string lastName, string password, string secretQuestion, string answer, string stakeholderDescrip)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();

            try
            {
                var user = ctx.User.Create();
                user.Email                  = email;
                user.FirstName              = firstName;
                user.LastName               = lastName;
                user.PasswordHash           = CustomEnrypt.Encrypt(password);
                user.SecretQuestion         = secretQuestion;
                user.Answer                 = answer;
                user.StakeholderDescription = stakeholderDescrip;
                user = ctx.User.Add(user);
                ctx.SaveChanges();
                return(true);
            }catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            ctx.Dispose();
            return(false);
        }
Esempio n. 5
0
        /// <summary>
        /// returns all isses which the user have access to
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static List <Issue> UserIssues(int userId)
        {
            User user = UserOp.GetUser(userId);
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            List <Issue>          l   = ctx.Database.SqlQuery <Issue>("SELECT * FROM Issue WHERE Id IN (SELECT IssueId FROM AccessRight Where UserId =" + userId + ")").ToList();
            var query = from Issue in ctx.Issue.AsNoTracking()
                        where
                        (from AccessRight in ctx.AccessRight
                         where AccessRight.UserId == userId
                         select new
            {
                AccessRight.IssueId
            }).Contains(new { IssueId = Issue.Id })
                        select Issue;
            List <Issue> list = new List <Issue>();

            foreach (Issue issue in query.AsNoTracking())
            {
                list.Add(issue);
            }

            ctx.Dispose();

            return(l);
        }
Esempio n. 6
0
        /// <summary>
        /// returns alternatives of issue
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId">user who is performing this operation</param>
        /// <returns></returns>
        public static List <Alternative> GetIssueAlternatives(int issueId, int userId)
        {
            ApplicationDBEntities ctx  = new ApplicationDBEntities();
            List <Alternative>    list = ctx.Alternative.AsNoTracking().Where(x => x.IssueId == issueId).ToList();

            return(list);
        }
Esempio n. 7
0
        /// <summary>
        /// grants view access to all parent issues
        /// </summary>
        /// <param name="userId">user id</param>
        /// <param name="issueId">issue id</param>
        private static void GrantAccess(int userId, int issueId, ApplicationDBEntities ctx)
        {
            List <Issue> parentList = IssueOp.RootIssues(issueId, ctx);

            foreach (Issue i in parentList)
            {
                if (i.AccessRight.Where(x => x.UserId == userId).Count() == 0)
                {
                    AccessRight ar = new AccessRight();
                    ar.UserId              = userId;
                    ar.IssueId             = i.Id;
                    ar.Right               = "V";
                    ar.MailNotification    = false;
                    ar.NotificationLevel   = "";
                    ar.SelfAssesmentDescr  = "";
                    ar.SelfAssessmentValue = 0;
                    ctx.AccessRight.Add(ar);
                    ctx.Entry(ar).State = EntityState.Added;
                    try
                    {
                        ctx.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }
Esempio n. 8
0
        /// <summary>
        /// returns true if user has to update selfassessment
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static bool SelfAssessmentActionRequired(int issueId, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            bool   ret;
            string status = ctx.Issue.Find(issueId).Status;

            if (status == "CREATING" || status == "BRAINSTORMING1")
            {
                AccessRight ar = ctx.AccessRight.Find(userId, issueId);
                if (ar.SelfAssessmentValue == 0 && ar.Right != "V")
                {
                    ret = true;
                }
                else
                {
                    ret = false;
                }
            }
            else
            {
                ret = false;
            }
            ctx.Dispose();
            return(ret);
        }
Esempio n. 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="issueId">issue id</param>
        /// <param name="userId">user id</param>
        /// <returns>access right for issue and user</returns>
        public static AccessRight GetAccessRight(int issueId, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            AccessRight           ar  = ctx.AccessRight.AsNoTracking().Where(x => x.IssueId == issueId && x.UserId == userId).FirstOrDefault();

            return(ar);
        }
Esempio n. 10
0
        /// <summary>
        /// updates slefassesment of an User
        /// </summary>
        /// <param name="value">self assessment value</param>
        /// <param name="description">self assessment description</param>
        public static void UpdateSelfAssesment(double value, string description, int issueId, int userId)
        {
            ApplicationDBEntities ctx   = new ApplicationDBEntities();
            AccessRight           right = ctx.AccessRight.AsNoTracking().Where(x => x.IssueId == issueId && x.UserId == userId).FirstOrDefault();
            bool update = false;

            if (right.SelfAssessmentValue != value)
            {
                right.SelfAssessmentValue = value;
                update = true;
            }
            if (right.SelfAssesmentDescr != description)
            {
                right.SelfAssesmentDescr = description;
                update = true;
            }
            if (update)
            {
                HAccessRight har = new HAccessRight();
                har.SelfAssesmentDescr  = right.SelfAssesmentDescr;
                har.SelfAssessmentValue = right.SelfAssessmentValue;
                har.ChangeDate          = System.DateTime.Now;
                har.IssueId             = right.IssueId;
                har.UserId = right.UserId;
                har.Action = "Selfassessment updated";
                ctx.HAccessRight.Add(har);
                ctx.Entry(har).State = EntityState.Added;

                ctx.Entry(right).State = EntityState.Modified;
                ctx.SaveChanges();
            }

            ctx.Dispose();
        }
Esempio n. 11
0
        /// <summary>
        /// removes user from issue
        /// </summary>
        /// <param name="accessRight">access right to be removed</param>
        /// <param name="userId">user who is delteing access right</param>
        /// <returns>bool if successful</returns>
        public static bool RemoveAccessRight(AccessRight accessRight, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();

            try
            {
                using (var dbContextTransaction = ctx.Database.BeginTransaction())
                {
                    ctx.Database.ExecuteSqlCommand("delete from [appSchema].[HAccessRight] WHERE UserId = {0} AND IssueId ={1}", accessRight.UserId, accessRight.IssueId);
                    ctx.Database.ExecuteSqlCommand("delete from [appSchema].[AccessRight] WHERE UserId = {0} AND IssueId ={1}", accessRight.UserId, accessRight.IssueId);
                    dbContextTransaction.Commit();

                    HAccessRight har = new HAccessRight();
                    har.ChangeDate = DateTime.Now;
                    har.IssueId    = accessRight.IssueId;
                    har.UserId     = userId;
                    User u = ctx.User.Find(accessRight.UserId);
                    u                       = ctx.User.Find(accessRight.UserId);
                    har.Action              = u.FirstName + " " + u.LastName + " removed";
                    har.SelfAssesmentDescr  = "";
                    har.SelfAssessmentValue = 0;
                    ctx.HAccessRight.Add(har);
                    ctx.Entry(har).State = EntityState.Added;
                    ctx.SaveChanges();
                }
                ctx.Dispose();
                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(false);
            }
        }
Esempio n. 12
0
        /// <summary>
        /// sets a decision for an issue
        /// </summary>
        /// <param name="decision">the decision</param>
        /// <param name="userId">user who is performing this operation</param>
        public static void MakeDecision(Decision decision, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            HDecision             dec = new HDecision();

            if (ctx.Decision.Where(x => x.IssueId == decision.IssueId).Count() == 0)
            {
                ctx.Decision.Add(decision);
                ctx.Entry(decision).State = EntityState.Added;
                dec.Action = "Decision made";
            }
            else
            {
                Decision existingD = ctx.Decision.Find(decision.IssueId);

                existingD.AlternativeId    = decision.AlternativeId;
                existingD.Explanation      = decision.Explanation;
                ctx.Entry(existingD).State = EntityState.Modified;
                dec.Action = "Decision changed";
            }

            dec.ChangeDate    = DateTime.Now;
            dec.IssueId       = decision.IssueId;
            dec.UserId        = userId;
            dec.AlternativeId = decision.AlternativeId;
            dec.Explanation   = decision.Explanation;
            ctx.HDecision.Add(dec);
            ctx.Entry(dec).State = EntityState.Added;

            ctx.SaveChanges();
            ctx.Dispose();
        }
Esempio n. 13
0
        /// <summary>
        /// returns all criterionweights of an Issue
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId">user who is performing this operation</param>
        /// <returns></returns>
        public static List <CriterionWeight> GetIssueWeights(int issueId, int userId)
        {
            List <CriterionWeight> list = new List <CriterionWeight>();
            CriterionWeight        cw;
            ApplicationDBEntities  ctx = new ApplicationDBEntities();

            var query = from CriterionWeight in ctx.CriterionWeight
                        where
                        (from Criterion in ctx.Criterion
                         where
                         Criterion.Issue == issueId
                         select new
            {
                Criterion.Id
            }).Contains(new { Id = CriterionWeight.CriterionId })
                        select new
            {
                UserId      = CriterionWeight.UserId,
                CriterionId = CriterionWeight.CriterionId,
                Weight      = CriterionWeight.Weight
            };

            foreach (var c in query.AsNoTracking())
            {
                cw             = new CriterionWeight();
                cw.CriterionId = c.CriterionId;
                cw.Weight      = c.Weight;
                cw.UserId      = c.UserId;
                list.Add(cw);
            }

            ctx.Dispose();

            return(list);
        }
Esempio n. 14
0
        /// <summary>
        /// deletes list of alternatives
        /// </summary>
        /// <param name="alternativeIdList">list of to deleting alternative ids</param>
        /// <param name="userId"></param>
        public static void DeleteAlternatives(List <int> alternativeIdList, int userId)
        {
            Alternative           alt;
            ApplicationDBEntities ctx = new ApplicationDBEntities();

            if (alternativeIdList == null || alternativeIdList.Count() == 0)
            {
                alternativeIdList = new List <int>();
            }

            foreach (int id in alternativeIdList)
            {
                alt = ctx.Alternative.Find(id);
                ctx.Alternative.Remove(alt);
                ctx.Entry(alt).State = EntityState.Deleted;
                ctx.SaveChanges();

                HAlternative halt = new HAlternative();
                halt.ChangeDate    = DateTime.Now;
                halt.AlternativeId = alt.Id;
                halt.UserId        = userId;
                halt.Action        = "alternative deleted (" + alt.Name + ")";
                halt.Name          = alt.Name;
                halt.Description   = alt.Description;
                halt.Reason        = alt.Reason;
                halt.Rating        = alt.Rating;
                halt.IssueId       = alt.IssueId;
                ctx.HAlternative.Add(halt);
                ctx.Entry(halt).State = EntityState.Added;
                ctx.SaveChanges();
            }

            ctx.Dispose();
            CommentOp.DeleteAlternativeComments(alternativeIdList);
        }
Esempio n. 15
0
        /// <summary>
        /// gets list of criterionweights which the user should fill out
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId">user who is performing the operation</param>
        /// <returns></returns>
        public static List <CriterionWeight> GetEmptyWeights(int issueId, int userId)
        {
            CriterionWeight        cw;
            ApplicationDBEntities  ctx  = new ApplicationDBEntities();
            List <CriterionWeight> list = new List <CriterionWeight>();

            var query = from Criterion in ctx.Criterion
                        where
                        Criterion.Issue == issueId
                        select new
            {
                Id          = Criterion.Id,
                Name        = Criterion.Name,
                Description = Criterion.Description,
                Issue       = Criterion.Issue,
                Weight      = Criterion.Weight,
                WeightPC    = Criterion.WeightPC
            };

            foreach (var c in query.AsNoTracking())
            {
                cw             = new CriterionWeight();
                cw.CriterionId = c.Id;
                cw.UserId      = userId;
                cw.Weight      = 0.0;
                list.Add(cw);
            }

            ctx.Dispose();

            return(list);
        }
Esempio n. 16
0
        /// <summary>
        /// gets decision trustworthiness
        /// </summary>
        /// <param name="issueId">issue id</param>
        /// <returns>list of users names</returns>
        public static List <string> GetDecisionTrustwortiness(int issueId)
        {
            ApplicationDBEntities ctx      = new ApplicationDBEntities();
            List <string>         list     = new List <string>();
            List <User>           userList = ctx.User.ToList();

            string query = "SELECT distinct(un.UserId) FROM" +
                           "(SELECT ir.UserId FROM InformationRead ir Where [Read] = 0 AND ir.TName Like 'DTEvaluation' AND FK LIKE {0} and ir.UserId IN " +
                           "(SELECT UserId From Rating Where AlternativeId in (Select Id From Alternative Where IssueId = {0})) " +
                           "UNION " +
                           "SELECT ir.UserId FROM InformationRead ir Where [Read] = 0 AND ir.TName Like 'DTCritWeight' AND FK LIKE {0} and ir.UserId IN " +
                           "	(SELECT UserId From CriterionWeight Where CriterionId in (Select Id From Criterion Where Issue = {0}))) un";

            var result = ctx.Database.SqlQuery <int>(query, issueId);

            User u;

            foreach (int userId in result)
            {
                u = userList.Find(x => x.Id == userId);
                list.Add(u.FirstName + ' ' + u.LastName);
            }

            ctx.Dispose();
            return(list);
        }
Esempio n. 17
0
        /// <summary>
        /// returns true if user has to evaluate
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static bool GetRatingActionRequired(int issueId, int userId)
        {
            bool ret;
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            AccessRight           ar  = ctx.AccessRight.Find(userId, issueId);

            if (ctx.Issue.Find(issueId).Status == "EVALUATING" && ar.Right != "V")
            {
                List <Alternative> aList = ctx.Alternative.Where(x => x.IssueId == issueId).ToList();
                if (aList.Count != 0)
                {
                    int           id    = aList.FirstOrDefault().Id;
                    List <Rating> rList = ctx.Rating.Where(x => x.AlternativeId == id && x.UserId == userId).ToList();
                    if (rList == null || rList.Count == 0)
                    {
                        ret = true;
                    }
                    else
                    {
                        ret = false;
                    }
                }
                else
                {
                    ret = false;
                }
            }
            else
            {
                ret = false;
            }

            ctx.Dispose();
            return(ret);
        }
Esempio n. 18
0
        /// <summary>
        /// returns a List of Usernames
        /// </summary>
        /// <param name="userIds"></param>
        /// <returns></returns>
        public static List <KeyValuePair <int, string> > GetUserNames(List <int> userIds)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            List <KeyValuePair <int, string> > list = new List <KeyValuePair <int, string> >();
            string name;

            var query = from User in ctx.User
                        where userIds.Contains(User.Id)
                        select new
            {
                User.Id,
                User.FirstName,
                User.LastName
            };

            foreach (var person in query)
            {
                name = person.FirstName + " " + person.LastName;
                list.Add(new KeyValuePair <int, string>(person.Id, name));
            }

            ctx.Dispose();

            return(list);
        }
Esempio n. 19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="issueId">issue id</param>
        /// <param name="userId">user id</param>
        /// <returns>list of changes made from user for issue</returns>
        public static List <Changes_View> GetUserChanges(int issueId, int userId)
        {
            ApplicationDBEntities ctx  = new ApplicationDBEntities();
            List <Changes_View>   list = ctx.Changes_View.AsNoTracking().Where(x => x.IssueId == issueId && x.UserId == userId).OrderByDescending(x => x.ChangeDate).ToList();

            ctx.Dispose();
            return(list);
        }
Esempio n. 20
0
        /// <summary>
        /// gets the accessright for user of an issue
        /// </summary>
        /// <param name="userId">user id</param>
        /// <param name="issueId">issue id</param>
        /// <returns></returns>
        public static AccessRight AccessRightOfUserForIssue(int userId, int issueId)
        {
            ApplicationDBEntities ctx   = new ApplicationDBEntities();
            AccessRight           right = ctx.AccessRight.AsNoTracking().Where(x => x.IssueId == issueId && x.UserId == userId).FirstOrDefault();

            ctx.Dispose();
            return(right);
        }
Esempio n. 21
0
        /// <summary>
        /// returns all available Tags
        /// </summary>
        /// <returns></returns>
        public static List <Tag> GetAllTags()
        {
            ApplicationDBEntities ctx  = new ApplicationDBEntities();
            List <Tag>            list = ctx.Tag.AsNoTracking().ToList();

            ctx.Dispose();
            return(list);
        }
Esempio n. 22
0
        /// <summary>
        /// returns all Criteria of an Issue
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId">user who is performing this operation</param>
        /// <returns></returns>
        public static List <Criterion> GetIssueCriterions(int issueId, int userId)
        {
            ApplicationDBEntities ctx  = new ApplicationDBEntities();
            List <Criterion>      list = ctx.Criterion.AsNoTracking().Where(x => x.Issue == issueId).ToList();

            ctx.Dispose();
            return(list);
        }
Esempio n. 23
0
        /// <summary>
        /// returns title of an issue
        /// </summary>
        /// <param name="issueId"></param>
        /// <returns></returns>
        public static string IssueTitle(int issueId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            string title = ctx.Issue.Where(x => x.Id == issueId).FirstOrDefault().Title;

            ctx.Dispose();
            return(title);
        }
Esempio n. 24
0
        /// <summary>
        /// retrieves user by Id
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static User GetUser(int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            User user = ctx.User.AsNoTracking().Where(x => x.Id == userId).FirstOrDefault();

            ctx.Dispose();
            return(user);
        }
Esempio n. 25
0
        /// <summary>
        /// returns all available users
        /// </summary>
        /// <returns></returns>
        public static List <User> GetAllUsers()
        {
            ApplicationDBEntities ctx  = new ApplicationDBEntities();
            List <User>           list = ctx.User.AsNoTracking().ToList();

            ctx.Dispose();
            return(list);
        }
Esempio n. 26
0
        /// <summary>
        /// gets decision for an Issue
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId">user who is performing this operation</param>
        /// <returns></returns>
        public static Decision GetDecision(int issueId, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            Decision decision         = ctx.Decision.AsNoTracking().Where(x => x.IssueId == issueId).FirstOrDefault();

            ctx.Dispose();

            return(decision);
        }
Esempio n. 27
0
        /// <summary>
        /// returns all available issues
        /// </summary>
        /// <param name="issueId"></param>
        /// <returns></returns>
        public static Issue GetIssueById(int issueId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            Issue issue = ctx.Issue.AsNoTracking().Where(x => x.Id == issueId).FirstOrDefault();

            ctx.Dispose();

            return(issue);
        }
Esempio n. 28
0
        /// <summary>
        /// marks issue as read for user
        /// </summary>
        /// <param name="issueId">issue id</param>
        /// <param name="userId">user id</param>
        /// <returns>true if successfull</returns>
        public static bool MarkIssue(int issueId, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            DbCommand             cmd;
            string sql;
            bool   marked = false;

            ctx.Database.Connection.Open();

            sql = "select count(*) from InformationRead Where TName Like 'Issue' AND UserId = {0} AND [Read] = 0 AND FK LIKE {1}";

            if (ctx.Database.SqlQuery <int>(sql, userId, issueId).FirstOrDefault() > 0)
            {
                cmd             = ctx.Database.Connection.CreateCommand();
                sql             = "update appSchema.InformationRead SET [Read] = 1 WHERE TName LIKE 'Issue' and FK LIKE '" + issueId + "' AND UserId = " + userId;
                cmd.CommandText = sql;
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.ExecuteNonQuery();

                //decision trustworthiness weighting
                if (ctx.Issue.Find(issueId).Status == "BRAINSTORMING2")
                {
                    //if user has read criteria info and now issue info then mark DT Criteria True
                    sql = "select count(*) from InformationRead Where TName Like 'Criterion' AND UserId = {0} AND [Read] = 0 AND FK IN (SELECT Id From Criterion Where Issue = {1})";
                    if (ctx.Database.SqlQuery <int>(sql, userId, issueId).FirstOrDefault() == 0)
                    {
                        cmd             = ctx.Database.Connection.CreateCommand();
                        sql             = "update appSchema.InformationRead SET [Read] = 1 WHERE TName LIKE 'DTCritWeight' and FK LIKE '" + issueId + "' AND UserId = " + userId;
                        cmd.CommandText = sql;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.ExecuteNonQuery();
                    }
                }

                //decision trustworthiness evaluation
                if (ctx.Issue.Find(issueId).Status == "EVALUATING")
                {
                    //if user has read criteria, alternatives info and now issue info then mark DT Evaluation True
                    sql = "select count(*) from InformationRead Where UserId = {0} AND [Read] = 0 AND " +
                          "(TName Like 'Criterion' AND FK IN (SELECT Id From Criterion Where Issue = {1}) OR " +
                          "TName Like 'Alternative' AND FK IN (Select Id From Alternative Where IssueId = {1}))";
                    if (ctx.Database.SqlQuery <int>(sql, userId, issueId).FirstOrDefault() == 0)
                    {
                        cmd             = ctx.Database.Connection.CreateCommand();
                        sql             = "update appSchema.InformationRead SET [Read] = 1 WHERE TName LIKE 'DTEvaluation' and FK LIKE '" + issueId + "' AND UserId = " + userId;
                        cmd.CommandText = sql;
                        cmd.CommandType = System.Data.CommandType.Text;
                        cmd.ExecuteNonQuery();
                    }
                }

                marked = true;
            }
            ctx.Database.Connection.Close();
            ctx.Dispose();
            return(marked);
        }
Esempio n. 29
0
        /// <summary>
        /// returns the count of unread infomation for user by issue
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static int GetReadInfosCount(int issueId, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            string sql = "SELECT count(*) FROM InformationRead " + WhereClauseInfoCount(issueId, userId, ctx) + " AND [Read] = 1";
            int    cnt = ctx.Database.SqlQuery <int>(sql).FirstOrDefault();

            ctx.Dispose();
            return(cnt);
        }
Esempio n. 30
0
        /// <summary>
        /// updates a list of alternatives
        /// </summary>
        /// <param name="alternativeList"></param>
        /// <param name="useId">user who is performing this operation</param>
        public static void UpdateAlternatives(List <Alternative> alternativeList, int useId)
        {
            Alternative           updateAlt;
            bool                  updated;
            ApplicationDBEntities ctx = new ApplicationDBEntities();

            if (alternativeList == null || alternativeList.Count() == 0)
            {
                alternativeList = new List <Alternative>();
            }

            foreach (Alternative alt in alternativeList)
            {
                updated   = false;
                updateAlt = ctx.Alternative.Find(alt.Id);
                if (alt.Description != updateAlt.Description || !alt.Description.Equals(updateAlt.Description))
                {
                    updateAlt.Description = alt.Description;
                    updated = true;
                }
                if (alt.Name != updateAlt.Name || !alt.Name.Equals(updateAlt.Name))
                {
                    updateAlt.Name = alt.Name;
                    updated        = true;
                }
                if (!(alt.Reason == null && updateAlt.Reason == null))
                {
                    if (alt.Reason != updateAlt.Reason || !alt.Reason.Equals(updateAlt.Reason))
                    {
                        updateAlt.Reason = alt.Reason;
                        updated          = true;
                    }
                }

                if (updated)
                {
                    ctx.Entry(updateAlt).State = EntityState.Modified;
                    ctx.SaveChanges();

                    HAlternative halt = new HAlternative();
                    halt.ChangeDate    = DateTime.Now;
                    halt.AlternativeId = updateAlt.Id;
                    halt.UserId        = useId;
                    halt.Action        = "alternative updated (" + updateAlt.Name + ")";
                    halt.Name          = updateAlt.Name;
                    halt.Description   = updateAlt.Description;
                    halt.Reason        = updateAlt.Reason;
                    halt.Rating        = updateAlt.Rating;
                    halt.IssueId       = updateAlt.IssueId;
                    ctx.HAlternative.Add(halt);
                    ctx.Entry(halt).State = EntityState.Added;
                    ctx.SaveChanges();
                }
            }

            ctx.Dispose();
        }