Beispiel #1
0
        /// <summary>
        /// puts issue to next stage
        /// </summary>
        /// <param name="issueId"></param>
        /// <param name="userId">user who is performing this action</param>
        public static void NextStage(int issueId, int userId)
        {
            ApplicationDBEntities ctx = new ApplicationDBEntities();
            Issue issue = ctx.Issue.Find(issueId);

            switch (issue.Status)
            {
            case "CREATING":
                issue.Status = "BRAINSTORMING1";
                break;

            case "BRAINSTORMING1":
                issue.Status = "BRAINSTORMING2";
                break;

            case "BRAINSTORMING2":
                issue.Status = "EVALUATING";
                break;

            case "EVALUATING":
                issue.Status = "DECIDING";
                break;

            case "DECIDING":
                issue.Status = "FINISHED";
                break;

            case "FINISHED":
                issue.Status = "CLOSED";
                break;

            case "CLOSED":
                issue.Status = "FINISHED";
                break;
            }
            ctx.Entry(issue).State = EntityState.Modified;
            ctx.SaveChanges();

            HIssue hissue = new HIssue();

            hissue.ChangeDate       = DateTime.Now;
            hissue.IssueId          = issueId;
            hissue.UserId           = userId;
            hissue.Action           = "issue moved to next stage";
            hissue.Status           = issue.Status;
            hissue.Title            = issue.Title;
            hissue.Description      = issue.Description;
            hissue.Setting          = issue.Setting;
            hissue.Status           = issue.Status;
            hissue.AnonymousPosting = issue.AnonymousPosting;
            hissue.Parent           = issue.Parent;
            hissue.DependsOn        = issue.DependsOn;
            hissue.GroupThink       = issue.GroupThink;
            hissue.ReviewRating     = issue.ReviewRating;
            ctx.HIssue.Add(hissue);
            ctx.Entry(hissue).State = EntityState.Added;
            ctx.SaveChanges();

            string status  = issue.Status;
            string setting = issue.Setting;

            ctx.Dispose();

            if (setting == "B" && issue.Status == "DECIDING")
            {
                PairwiseComparisonOp.CalculateResult(issueId);
            }
        }
Beispiel #2
0
        /// <summary>
        /// updates an issue
        /// </summary>
        /// <param name="issue"></param>
        /// <param name="userId">user who is performing this operation</param>
        /// <returns>true if update made</returns>
        public static int UpdateIssue(Issue issue, int userId)
        {
            Issue updateIssue;
            ApplicationDBEntities ctx = new ApplicationDBEntities();

            updateIssue = ctx.Issue.Find(issue.Id);
            List <string> updatedFields = new List <string>();

            bool updated = false;

            if (issue.Title != updateIssue.Title)
            {
                updateIssue.Title = issue.Title;
                updated           = true;
                updatedFields.Add("title");
            }
            if (updateIssue.Description != issue.Description)
            {
                updateIssue.Description = issue.Description;
                updated = true;
                updatedFields.Add("description");
            }
            if (updateIssue.AnonymousPosting != issue.AnonymousPosting)
            {
                updateIssue.AnonymousPosting = issue.AnonymousPosting;
                updated = true;
                updatedFields.Add("anonymous posting");
            }
            if (updateIssue.Status != issue.Status)
            {
                updateIssue.Status = issue.Status;
                updated            = true;
                updatedFields.Add("status");
            }
            if (updateIssue.Parent != issue.Parent)
            {
                updateIssue.Parent = issue.Parent;
                updated            = true;
                updatedFields.Add("parent issue");
            }
            if (updateIssue.DependsOn != issue.DependsOn)
            {
                updateIssue.DependsOn = issue.DependsOn;
                updated = true;
                updatedFields.Add("depends on issue");
            }
            if (updateIssue.Setting != issue.Setting)
            {
                updateIssue.Setting = issue.Setting;
                updated             = true;
                updatedFields.Add("setting");
            }
            if (updated)
            {
                ctx.Entry(updateIssue).State = EntityState.Modified;
                ctx.SaveChanges();
                HIssue hissue = new HIssue();
                hissue.ChangeDate = DateTime.Now;
                hissue.IssueId    = issue.Id;
                hissue.UserId     = userId;
                hissue.Action     = "Issue updated (";
                bool first = true;
                foreach (string str in updatedFields)
                {
                    if (first)
                    {
                        hissue.Action = hissue.Action + str;
                        first         = false;
                    }
                    else
                    {
                        hissue.Action = hissue.Action + " ," + str;
                    }
                }
                hissue.Action           = hissue.Action + ")";
                hissue.Status           = issue.Status;
                hissue.Title            = issue.Title;
                hissue.Description      = issue.Description;
                hissue.Setting          = issue.Setting;
                hissue.Status           = issue.Status;
                hissue.AnonymousPosting = issue.AnonymousPosting;
                hissue.Parent           = issue.Parent;
                hissue.DependsOn        = issue.DependsOn;
                hissue.GroupThink       = issue.GroupThink;
                hissue.ReviewRating     = issue.ReviewRating;

                //problem with action
                hissue.Action = "issue updated";

                ctx.HIssue.Add(hissue);
                ctx.Entry(hissue).State = EntityState.Added;
                try
                {
                    ctx.SaveChanges();
                }catch (DbEntityValidationException ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            ctx.Dispose();

            return(updateIssue.Id);
        }
Beispiel #3
0
        /// <summary>
        /// inserts new issue
        /// </summary>
        /// <param name="issue"></param>
        /// <param name="userId">user who is performing operation</param>
        /// <returns>id of inserted issue</returns>
        public static int InsertIssue(Issue issue, int userId, double selfAssessmentValue, string selfAssessmentDescription)
        {
            int issueId = -1;
            ApplicationDBEntities ctx = new ApplicationDBEntities();

            try
            {
                Issue updateIssue = ctx.Issue.Create();
                updateIssue.Title            = issue.Title;
                updateIssue.Description      = issue.Description;
                updateIssue.AnonymousPosting = issue.AnonymousPosting;
                updateIssue.Status           = issue.Status;
                updateIssue.Parent           = issue.Parent;
                updateIssue.DependsOn        = issue.DependsOn;
                updateIssue.Setting          = issue.Setting;
                //updateIssue.TagIssue = null;
                ctx.Issue.Add(updateIssue);
                ctx.Entry(updateIssue).State = EntityState.Added;
                ctx.SaveChanges();
                issueId = updateIssue.Id;

                AccessRight ar = new AccessRight();
                ar.IssueId             = issueId;
                ar.UserId              = userId;
                ar.Right               = "O";
                ar.SelfAssessmentValue = selfAssessmentValue;
                ar.SelfAssesmentDescr  = selfAssessmentDescription;
                ar.MailNotification    = false;
                ctx.AccessRight.Add(ar);
                ctx.Entry(ar).State = EntityState.Added;

                HAccessRight har = new HAccessRight();
                har.ChangeDate          = DateTime.Now;
                har.IssueId             = ar.IssueId;
                har.UserId              = userId;
                har.Action              = "selfassessment added";
                har.SelfAssesmentDescr  = selfAssessmentDescription;
                har.SelfAssessmentValue = selfAssessmentValue;
                ctx.HAccessRight.Add(har);
                ctx.Entry(har).State = EntityState.Added;

                HIssue hissue = new HIssue();
                hissue.ChangeDate       = DateTime.Now;
                hissue.IssueId          = issueId;
                hissue.UserId           = userId;
                hissue.Action           = "issue created";
                hissue.Status           = issue.Status;
                hissue.Title            = issue.Title;
                hissue.Description      = issue.Description;
                hissue.Setting          = issue.Setting;
                hissue.Status           = issue.Status;
                hissue.AnonymousPosting = issue.AnonymousPosting;
                hissue.Parent           = issue.Parent;
                hissue.DependsOn        = issue.DependsOn;
                hissue.GroupThink       = issue.GroupThink;
                hissue.ReviewRating     = issue.ReviewRating;
                ctx.HIssue.Add(hissue);
                ctx.Entry(hissue).State = EntityState.Added;

                ctx.SaveChanges();

                //mark issue as read
                ApplicationDBEntities ctx2 = new ApplicationDBEntities();
                DbCommand             cmd  = ctx2.Database.Connection.CreateCommand();
                ctx2.Database.Connection.Open();
                cmd.CommandText = "UPDATE appSchema.InformationRead SET [Read] = 1 WHERE UserId = " + userId + " AND TName LIKE 'Alternative' AND FK LIKE '" + issueId + "'";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.ExecuteNonQuery();
                ctx2.Database.Connection.Close();
                ctx2.Dispose();
            }
            catch (DbEntityValidationException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            ctx.Dispose();

            return(issueId);
        }