Example #1
0
        public ActionResult CreateIssue(UIIssue_C uim)
        {
            AjaxStatus status = new AjaxStatus();

            using (var context = new DataContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        Account account = base.GetLoginAccount();
                        Issue   dbm     = uim.CreateModel();
                        IssueOperations.TryCreate(account, context, dbm);
                        context.SaveChanges();
                        IssueTransition transition = uim.CreateModel(dbm, account);
                        IssueTransitionOperations.TryCreate(account, context, transition);
                        context.SaveChanges();
                        transaction.Commit();
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        base.HandleException("CreateIssue", e);
                        status.SetError(e.Message);
                    }
                }
            }
            return(Json(status));
        }
Example #2
0
        public ActionResult RescheduleIssue(UIIssueSchedule_U uim)
        {
            AjaxStatus status = new AjaxStatus();

            using (var context = new DataContext())
            {
                try
                {
                    Account account = base.GetLoginAccount();
                    Issue   dbm     = IssueOperations.TryRead(account, context, uim.id);
                    // Update model
                    uim.UpdateModel(dbm);
                    IssueOperations.TryUpdate(account, context, dbm);
                    // Mark as unread
                    IssueOperations.TryDeleteReaders(account, context, dbm.id);
                    context.SaveChanges();
                }
                catch (Exception e)
                {
                    base.HandleException("RescheduleIssue", e);
                    status.SetError(e.Message);
                }
            }
            return(Json(status));
        }
Example #3
0
        public ActionResult UpdateIssueStatus(UIIssueStatus_U uim)
        {
            AjaxStatus status = new AjaxStatus();

            using (var context = new DataContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        Account account = base.GetLoginAccount();
                        Issue   dbm     = IssueOperations.TryRead(account, context, uim.id);
                        // Create transition
                        IssueTransition transition = uim.CreateModel(dbm, account);
                        IssueTransitionOperations.TryCreate(account, context, transition);
                        // Update model
                        uim.UpdateModel(dbm);
                        IssueOperations.TryUpdate(account, context, dbm);
                        // Mark as unread
                        IssueOperations.TryDeleteReaders(account, context, dbm.id);
                        // TODO: If new status is to archive, move to archived tables
                        context.SaveChanges();
                        transaction.Commit();
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        base.HandleException("UpdateIssueStatus", e);
                        status.SetError(e.Message);
                    }
                }
            }
            return(Json(status));
        }
Example #4
0
        /* Render */

        public ActionResult Index()
        {
            Account account = base.GetLoginAccount(false);

            if (account == null || !IssueOperations.CanRender(account))
            {
                return(base.ToLoginPage());
            }
            return(View());
        }
        public ActionResult ListIssues(int customer, int areatype, int status, int prio)
        {
            using (var context = new DataContext())
            {
                try
                {
                    Account            account = base.GetLoginAccount();
                    IQueryable <Issue> query   = IssueOperations.TryList(account, context).Where(i => i.status < Issue.__STATUS_ARCHIVED);

                    // Handle filtering
                    if (customer != Customer.CUSTOMER_ANY)
                    {
                        query = query.Where(i => i.customerid == customer);
                    }
                    if (areatype != Issue.AREATYPE_ANY)
                    {
                        query = query.Where(i => i.areatype == areatype);
                    }
                    if (status != Issue.STATUS_ANY)
                    {
                        query = query.Where(i => i.status == status);
                    }
                    if (prio != Issue.PRIO_ANY)
                    {
                        query = query.Where(i => i.prio == prio);
                    }

                    // Execute query
                    IList <Issue> dbms = query.ToList();

                    // Compose view models
                    IList <UIIssueCalendar_List> uims = new List <UIIssueCalendar_List>(dbms.Count);
                    var accounts = context.Accounts.Where(a => a.authz == Account.AUTHZ_TECHNICIAN && a.active == Account.ACTIVE).Select(a => new { a.id, a.firstname, a.lastname }).ToList();
                    foreach (Issue dbm in dbms)
                    {
                        var    assignee     = accounts.FirstOrDefault(a => a.id == dbm.assignedid);
                        string assigneename = assignee == null ? "--" : assignee.firstname + " " + assignee.lastname;
                        uims.Add(new UIIssueCalendar_List(dbm, assigneename));
                    }

                    return(Json(uims));
                }
                catch (Exception e)
                {
                    base.HandleException("ListIssues", e);
                    return(null);
                }
            }
        }
Example #6
0
        public ActionResult ListIssues(int customer, int areatype, int status, int prio)
        {
            using (var context = new DataContext())
            {
                try
                {
                    Account            account = base.GetLoginAccount();
                    IQueryable <Issue> query   = IssueOperations.TryList(account, context).Where(i => i.status < Issue.__STATUS_ARCHIVED);

                    // Handle filtering
                    if (customer != Customer.CUSTOMER_ANY)
                    {
                        query = query.Where(i => i.customerid == customer);
                    }
                    if (areatype != Issue.AREATYPE_ANY)
                    {
                        query = query.Where(i => i.areatype == areatype);
                    }
                    if (status != Issue.STATUS_ANY)
                    {
                        query = query.Where(i => i.status == status);
                    }
                    if (prio != Issue.PRIO_ANY)
                    {
                        query = query.Where(i => i.prio == prio);
                    }

                    // Execute query
                    IList <Issue>   dbms  = query.ToList();
                    IList <Account> techs = context.Accounts.Where(a => a.authz == Account.AUTHZ_TECHNICIAN && a.active == Account.ACTIVE).OrderBy(a => a.firstname).ThenBy(a => a.lastname).ToList();

                    // Compose view models
                    UIIssueSchedule_List uims = new UIIssueSchedule_List(dbms, techs);
                    return(Json(uims));
                }
                catch (Exception e)
                {
                    base.HandleException("ListIssues", e);
                    return(null);
                }
            }
        }
Example #7
0
 public ActionResult ReadIssue(int id)
 {
     using (var context = new DataContext())
     {
         try
         {
             Account  account  = base.GetLoginAccount();
             Issue    dbm      = IssueOperations.TryRead(account, context, id);
             Customer customer = CustomerOperations.TryRead(account, context, dbm.customerid);
             IList <IssueFeedback>   feedbacks   = IssueFeedbackOperations.TryList(account, context, dbm.id).ToList();
             IList <IssueTransition> transitions = IssueTransitionOperations.TryList(account, context, dbm.id).ToList();
             return(Json(new UIIssue_R(dbm, customer, feedbacks, transitions)));
         }
         catch (Exception e)
         {
             base.HandleException("ReadIssue", e);
             return(null);
         }
     }
 }
Example #8
0
        public ActionResult UpdateIssue(UIIssueProblem_U uim)
        {
            AjaxStatus status = new AjaxStatus();

            using (var context = new DataContext())
            {
                try
                {
                    Account account = base.GetLoginAccount();
                    Issue   dbm     = IssueOperations.TryRead(account, context, uim.issueid);
                    dbm = uim.UpdateModel(dbm);
                    IssueOperations.TryUpdate(account, context, dbm);
                    context.SaveChanges();
                }
                catch (Exception e)
                {
                    base.HandleException("UpdateIssue", e);
                    status.SetError(e.Message);
                }
            }
            return(Json(status));
        }
        public ActionResult ListIssues(int draw, int start, int length, int customer, int areatype, int status, int prio)
        {
            using (var context = new DataContext())
            {
                try
                {
                    Account            account = base.GetLoginAccount();
                    IQueryable <Issue> query   = IssueOperations.TryList(account, context).Where(i => i.status < Issue.__STATUS_ARCHIVED);

                    // Handle filtering
                    if (customer != Customer.CUSTOMER_ANY)
                    {
                        query = query.Where(i => i.customerid == customer);
                    }
                    if (areatype != Issue.AREATYPE_ANY)
                    {
                        query = query.Where(i => i.areatype == areatype);
                    }
                    if (status != Issue.STATUS_ANY)
                    {
                        query = query.Where(i => i.status == status);
                    }
                    if (prio != Issue.PRIO_ANY)
                    {
                        query = query.Where(i => i.prio == prio);
                    }

                    // Possibly apply filter
                    var searchstring = Request["search[value]"];
                    if (!String.IsNullOrWhiteSpace(searchstring))
                    {
                        query = query.Where(i =>
                                            i.id.ToString().StartsWith(searchstring) ||
                                            i.name.Matches(searchstring) ||
                                            i.address.Matches(searchstring));
                    }
                    int recordsFiltered = query.Count();

                    // Execute query
                    IList <Issue> dbms         = query.OrderBy(i => i.id).Skip(start).Take(length).ToList();
                    int           recordsTotal = context.Issues.Count();

                    // Compose view models
                    IList <UIIssueList_List> uims = new List <UIIssueList_List>(dbms.Count);
                    var accounts = context.Accounts.Where(a => a.authz == Account.AUTHZ_TECHNICIAN && a.active == Account.ACTIVE).Select(a => new { a.id, a.firstname, a.lastname }).ToList();
                    foreach (Issue dbm in dbms)
                    {
                        var    assignee     = accounts.FirstOrDefault(a => a.id == dbm.assignedid);
                        string assigneename = assignee == null ? "--" : assignee.firstname + " " + assignee.lastname;
                        uims.Add(new UIIssueList_List(dbm, assigneename));
                    }

                    return(Json(new { draw = draw, recordsTotal = recordsTotal, recordsFiltered = recordsFiltered, data = uims }));
                }
                catch (Exception e)
                {
                    base.HandleException("ListIssues", e);
                    return(null);
                }
            }
        }