Exemple #1
0
        public double SlaRestTime(int ticketId)
        {
            var dateTicket = UnitOfTicket.Where(x => x.TicketId == ticketId)
                             .Select(x => x.SlaExpiration).FirstOrDefault();
            var diffTime = dateTicket.Subtract(DateTime.Now.ToLocalTime()).TotalHours;

            return(diffTime);
        }
        public List <ViewModelTicket> ListItens()
        {
            var ticketClosedValid   = Repository._status.Where(x => x.StatusId == 04).Select(x => x.StatusId).FirstOrDefault();
            var ticketClosedInValid = Repository._status.Where(x => x.StatusId == 05).Select(x => x.StatusId).FirstOrDefault();

            return(UnitOfTicket.Where(x => x.StatusId != ticketClosedValid &&
                                      x.StatusId != ticketClosedInValid &&
                                      x.AnalystDesignated == null
                                      ).ToList());
        }
        public ActionResult CompanyTickets()
        {
            //var list = UnitOfTicket.GetAll().ToList();
            var company = UnitOfTicket.Where(x => x.UserId == User.Identity.GetUserName() &&
                                             x.StatusId != 05 &&
                                             x.StatusId != 06).Select(x => x.CompanyId).FirstOrDefault();

            var list = UnitOfTicket.Where(x => x.CompanyId == company).ToList();

            return(View(list));
        }
        public ContentResult UploadFiles(int ticketId)
        {
            var r = new List <UploadFilesResult>();

            foreach (string file in Request.Files)
            {
                HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
                if (hpf.ContentLength == 0)
                {
                    continue;
                }

                //"~/App_Data/Uploads/Tickets/"
                //string savedFileName = Path.Combine(Server.MapPath("~/App_Data"), Path.GetFileName(hpf.FileName));
                //string path = "~/App_Data/Uploads/Tickets/"+ticketId.ToString();
                var path = "C:/Users/lorran.palmeira/Source/Repos/XRTTicket/XRTTicket/App_Data/Uploads/Tickets/" + ticketId.ToString();
                //var path = "C:/Users/lorran.palmeira/Downloads/Arquivos/" + ticketId.ToString() +"/";
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string savedFileName = Path.Combine(Server.MapPath("~/App_Data/Uploads/Tickets/" + ticketId.ToString()), Path.GetFileName(hpf.FileName));
                hpf.SaveAs(savedFileName);

                var actions = new Models.Ticket.Action
                {
                    TicketId          = ticketId,
                    ActionDescription = "Sucess UpLoaded file by " + User.Identity.Name + " " + DateTime.Now.ToLocalTime(),
                    Date        = DateTime.Now.ToLocalTime(),
                    StatusId    = UnitOfTicket.Where(x => x.TicketId == ticketId).Select(x => x.StatusId).FirstOrDefault(),
                    PriorityId  = UnitOfTicket.Where(x => x.TicketId == ticketId).Select(x => x.PriorityId).FirstOrDefault(),
                    AlteredBy   = User.Identity.Name,
                    SendToUser  = true,
                    Files       = path + "/" + hpf.FileName,
                    IterationId = UnitOfTicketAction.Where(x => x.TicketId == ticketId).Max(x => x.IterationId) + 1
                };

                UnitOfTicketAction.Save(actions);



                /*
                 * r.Add(new UploadFilesResult()
                 * {
                 *  Name = hpf.FileName,
                 *  Length = hpf.ContentLength,
                 *  Type = hpf.ContentType
                 * });
                 */
            }
            return(Content("{\"name\":\"" + r[0].Name + "\",\"type\":\"" + r[0].Type + "\",\"size\":\"" + string.Format("{0} bytes", r[0].Length) + "\"}", "application/json"));
            //return Json("Sucess",JsonRequestBehavior.AllowGet);
        }
        public ActionResult NewTicket()
        {
            ViewBag.PriorityId   = new SelectList(Permissions.PriorityUser(), "PriorityId", "PriorityLevel");
            ViewBag.TicketTypeId = new SelectList(Repository._ticketType, "TicketTypeId", "TicketTypeName");
            ViewBag.ProductId    = new SelectList(Repository._product_list, "ProductId", "Name");
            ViewBag.SubProductId = new SelectList(new List <SubProduct>(), "SubProductId", "Name");
            ViewBag.TaskId       = new SelectList(new List <Task>(), "TaskId", "Name");
            ViewBag.VersionId    = new SelectList(new List <Models.Ticket.Version>(), "VersionId", "VersionName");


            ViewBag.NextTicket = Convert.ToInt32(UnitOfTicket.Next());

            return(View());
        }
        public ActionResult SearchTicket()
        {
            var Status = Repository._status.ToList();

            ViewBag.Status = Status;
            var designated = UnitOfTicket.Where(x => x.TicketId == x.TicketId).Select(x => x.AnalystDesignated).ToList();

            ViewBag.Designated = Repository.GetRolesToUsers("Analyst").ToList();
            ViewBag.OpenBy     = Repository.GetAllUsers();
            ViewBag.TicketType = Repository._ticketType.ToList();
            ViewBag.Priority   = Repository._priority.ToList();
            ViewBag.Company    = Repository.company.ToList();

            return(View(new List <ViewModelTicket>()));
        }
        public ActionResult ClosedTickets()
        {
            //var list = UnitOfTicket.GetAll().ToList();
            var userName = User.Identity.GetUserName();
            var list     = UnitOfTicket.Where(x => x.UserId == userName && x.StatusId == 06 || x.StatusId == 07).OrderByDescending(x => x.ClosedDateTime).Take(10).ToList();

            ViewBag.QuantMaxLinhasPorPagina = 10;
            ViewBag.PaginaAtual             = 1;

            var quant           = list.Count();
            var difQuantPaginas = (quant % ViewBag.QuantMaxLinhasPorPagina) > 0 ? 1 : 0;

            ViewBag.QuantPages = (quant / ViewBag.QuantMaxLinhasPorPagina) + difQuantPaginas;

            return(View("MyTickets", list));
        }
        public ActionResult MyTickets()
        {
            //var list = UnitOfTicket.GetAll().ToList();
            var userName = User.Identity.GetUserName();
            var list     = UnitOfTicket.Where(x => x.UserId == userName && x.StatusId != 06 && x.StatusId != 07).ToList();


            ViewBag.QuantMaxLinhasPorPagina = 10;
            ViewBag.PaginaAtual             = 1;

            var quant           = list.Count();
            var difQuantPaginas = (quant % ViewBag.QuantMaxLinhasPorPagina) > 0 ? 1 : 0;

            ViewBag.QuantPages = (quant / ViewBag.QuantMaxLinhasPorPagina) + difQuantPaginas;

            return(View(list));
        }
        public JsonResult GetListItensSeachTicket(int page, int sizePage)
        {
            /*
             * var listItens = pagination.ListItens();
             *
             * var result = (((page == 1 ? page = 0 : page-1) * sizePage));
             * var list = listItens.Skip(result ==0?result:result-1).Take(sizePage);
             *
             * return Json(list,JsonRequestBehavior.AllowGet);
             */


            var ticket    = new ViewModelTicket();
            var listItens = ListItensSeachTicket(ticket, null, null, null, null, null);

            var result = (((page == 1 ? page = 0 : page - 1) * sizePage));
            var list   = UnitOfTicket.GetAll().Skip(result == 0 ? result : result - 1).Take(sizePage);

            return(Json(list, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Queue()
        {
            var userName            = User.Identity.GetUserName();
            var ticketClosedValid   = Repository._status.Where(x => x.StatusId == 06).Select(x => x.StatusId).FirstOrDefault();
            var ticketClosedInValid = Repository._status.Where(x => x.StatusId == 07).Select(x => x.StatusId).FirstOrDefault();
            var list = UnitOfTicket.Where(x => x.StatusId != ticketClosedValid &&
                                          x.StatusId != ticketClosedInValid && x.AnalystDesignated == userName)
                       .ToList();


            ViewBag.QuantMaxLinhasPorPagina = 10;
            ViewBag.PaginaAtual             = 1;

            var quant           = list.Count();
            var difQuantPaginas = (quant % ViewBag.QuantMaxLinhasPorPagina) > 0 ? 1 : 0;

            ViewBag.QuantPages = (quant / ViewBag.QuantMaxLinhasPorPagina) + difQuantPaginas;

            //var list = UnitOfTicket.GetAll().ToList();


            return(View(list));
        }
        public ActionResult SaveTicket(Models.Ticket.ViewModelTicket ticket, string description, HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                ticket.TicketId        = Convert.ToInt32(UnitOfTicket.Next());
                ticket.OpenDateAndTime = DateTime.Now.ToLocalTime();
                ticket.UserId          = User.Identity.GetUserName();
                var user = (System.Security.Claims.ClaimsIdentity)User.Identity;
                ticket.CompanyId = Convert.ToInt32(user.FindFirstValue("CompanyId"));
                ticket.StatusId  = 1;


                var ret = Repository._priorityTime.Where(x => x.PriorityId == ticket.PriorityId)
                          .Select(x => x.SlaTime).FirstOrDefault();


                ticket.SlaExpiration = CalculateSla.AddWithinWorkingHours(ticket.OpenDateAndTime,
                                                                          TimeSpan.FromHours(ret), 9, 8);


                this.UnitOfTicket.Save(ticket);

                // Chech if exists files
                var path = string.Empty;
                if (file != null)
                {
                    path = UploadAndDownload.Upload(file, ticket.TicketId);
                }


                var actions = new Models.Ticket.Action
                {
                    TicketId          = ticket.TicketId,
                    ActionDescription = description,
                    StatusId          = ticket.StatusId,
                    Date       = DateTime.Now.ToLocalTime(),
                    AlteredBy  = User.Identity.Name,
                    SendToUser = true,
                    SlaRest    = TimeSpan.FromHours(
                        Repository._priorityTime
                        .Where(x => x.PriorityId == ticket.PriorityId)
                        .Select(x => x.SlaTime).FirstOrDefault()),
                    Files       = path,
                    IterationId = 1
                };

                this.UnitOfTicketAction.Save(actions);

                //return RedirectToAction(nameof(NewTicket));
                if (User.IsInRole("User") || User.IsInRole("SuperUser"))
                {
                    return(RedirectToAction(nameof(MyTickets)));
                }
                else
                {
                    return(RedirectToAction(nameof(TicketList)));
                }
            }
            else
            {
                return(View(nameof(NewTicket), ticket));
            }
        }
        public List <ViewModelTicket> ListItensSeachTicket(ViewModelTicket ticket,
                                                           DateTime?opendatefrom, DateTime?opendateto, DateTime?closedatefrom,
                                                           DateTime?closedateto, string description)
        {
            var query = UnitOfTicket.Where(x => x.ProductId > 0);

            if (opendatefrom != null && opendateto != null)
            {
                query = query.Where(c => c.OpenDateAndTime >= opendatefrom &&
                                    c.OpenDateAndTime.Date.AddHours(23).AddMinutes(59).AddSeconds(59) <= opendateto);
            }
            if (closedatefrom != null && closedateto != null)
            {
                query = query.Where(c => c.ClosedDateTime >= closedatefrom &&
                                    c.ClosedDateTime <= closedateto.Value.AddHours(23).AddMinutes(59).AddSeconds(59));
            }
            if (!string.IsNullOrEmpty(ticket.Title))
            {
                query = query.Where(c => c.Title.Contains(ticket.Title));
            }
            if (ticket.TicketId > 0)
            {
                query = query.Where(c => c.TicketId == ticket.TicketId);
            }
            if (ticket.StatusId > 0)
            {
                query = query.Where(c => c.StatusId == ticket.StatusId);
            }
            if (ticket.IdExternal > 0)
            {
                query = query.Where(c => c.IdExternal == ticket.IdExternal);
            }
            if (ticket.TicketTypeId > 0)
            {
                query = query.Where(c => c.TicketTypeId == ticket.TicketTypeId);
            }
            if (ticket.CompanyId > 0)
            {
                query = query.Where(c => c.CompanyId == ticket.CompanyId);
            }
            if (ticket.PriorityId > 0)
            {
                query = query.Where(c => c.PriorityId == ticket.PriorityId);
            }
            if (!string.IsNullOrEmpty(description))
            {
                query = query.Where(c => c.Title.Contains(ticket.Title));
            }
            if (!string.IsNullOrEmpty(ticket.UserId))
            {
                query = query.Where(c => c.UserId == ticket.UserId);
            }
            if (!string.IsNullOrEmpty(ticket.AnalystDesignated))
            {
                query = query.Where(c => c.AnalystDesignated == ticket.AnalystDesignated);
            }
            if (User.IsInRole("User"))
            {
                query = query.Where(c => c.UserId == User.Identity.GetUserName());
            }
            if (User.IsInRole("SuperUser"))
            {
                var user      = (System.Security.Claims.ClaimsIdentity)User.Identity;
                var companyId = Convert.ToInt32(user.FindFirstValue("CompanyId"));
                query = query.Where(x => x.CompanyId == companyId);
            }


            var list = query.ToList();

            return(list);
        }
        public JsonResult LikeTicketAjax(string title, int ticketId)
        {
            var result = UnitOfTicket.Where(x => x.Title.Contains(title) && x.TicketId != ticketId).Take(4);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }