public void TicketCreator(DateTime date) { var ticketList = new List <Ticket>(); Random r = new Random(); int rInt = r.Next(0, 10); for (var i = 0; i < rInt; i++) { var ticket = new Ticket(); ticket.CreatedDate = date; ticket.ProjectId = r.Next(1, 3); //Random x = new Random(); int ticketPriorityId = r.Next(1, 4); ticket.TicketPriorityId = ticketPriorityId; //Random y = new Random(); int ticketTypeId = r.Next(1, 3); ticket.TicketTypeId = ticketTypeId; //Random rand = new Random(); int toSkip = r.Next(0, db.Users.Count()); var AssignedToUser = db.Users.OrderBy(u => u.FirstName).Skip(toSkip).Take(1).FirstOrDefault(); ticket.AssignedToUser = AssignedToUser; //Random rand2 = new Random(); int toSkip2 = r.Next(0, db.Users.Count()); var SubmitterUser = db.Users.OrderBy(u => u.FirstName).Skip(toSkip2).Take(1).FirstOrDefault(); ticket.SubmitterUser = SubmitterUser; ticket.TicketStatusId = 1; string ticketTitleAndDescription = r.Next(0, 100).ToString(); ticket.Title = "Generator" + ticketTitleAndDescription; ticket.Description = "Generator" + ticketTitleAndDescription; //ticketList.Add(ticket); db.Tickets.Add(ticket); //saving inside the loop to create id's so that histories can be updated db.SaveChanges(); var AdminUserId = db.Users.Where(u => u.Email == "*****@*****.**").Select(u => u.Id).FirstOrDefault(); TicketHistory th = new TicketHistory //filling in all the properties of ticket history { TicketId = ticket.Id, UserId = AdminUserId, Property = "Title", OldValue = "N/A", NewValue = ticket.Title, DateChanged = ticket.CreatedDate, }; db.TicketHistories.Add(th); TicketHistory th2 = new TicketHistory //filling in all the properties of ticket history { TicketId = ticket.Id, UserId = ticket.SubmitterUserId, Property = "Ticket Submitted by", OldValue = "N/A", NewValue = ticket.SubmitterUser.FullName, DateChanged = ticket.CreatedDate, }; db.TicketHistories.Add(th2); TicketHistory th3 = new TicketHistory //filling in all the properties of ticket history { TicketId = ticket.Id, UserId = ticket.SubmitterUserId, Property = "Created Date", OldValue = "N/A", NewValue = ticket.CreatedDate.ToString(), DateChanged = ticket.CreatedDate, }; db.TicketHistories.Add(th3); db.SaveChanges(); } }
public async Task <ActionResult> Create([Bind(Include = "Id,TicketId,Comment")] TicketComment ticketComment, int Id) { if (ModelState.IsValid) { UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var ticket = db.Tickets.Find(Id); TicketNotification TN = new TicketNotification(); TN.TicketId = ticket.Id; TN.UserId = ticket.AssignedToUserId; TN.User = ticket.AssignedToUser; db.TicketNotifications.Add(TN); var message = new IdentityMessage { Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been commented on by" + " " + user.FirstName + user.LastName + "." + " " + "Please see your ticket comments to view the comment.", Subject = "Your ticket has been commented on.", Destination = TN.User.Email }; EmailService email = new EmailService(); await email.SendAsync(message); var userroleAdmin = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator"); var userroleProjectManager1 = helper.IsUserInRole(userId, "Project Manager1"); var userroleProjectManager2 = helper.IsUserInRole(userId, "Project Manager2"); var userroleProjectManager3 = helper.IsUserInRole(userId, "Project Manager3"); var userroleDeveloper1 = helper.IsUserInRole(userId, "Developer1"); var userroleDeveloper2 = helper.IsUserInRole(userId, "Developer2"); var userroleDeveloper3 = helper.IsUserInRole(userId, "Developer3"); var userroleDeveloper4 = helper.IsUserInRole(userId, "Developer4"); var userroleSubmitter = helper.IsUserInRole(userId, "Submitter"); int ticketid = Id; int projectid = ticket.Project.Id; if (userroleAdmin || userroleProjectManager1 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager2 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager3 && ph.IsUserOnAProject(userId, projectid) || userroleDeveloper1 && ticket.AssignedToUserId == userId || userroleDeveloper2 && ticket.AssignedToUserId == userId || userroleDeveloper3 && ticket.AssignedToUserId == userId || userroleDeveloper4 && ticket.AssignedToUserId == userId || userroleSubmitter && ticket.SubmitterUserId == userId) { ticketComment.Ticket = ticket; ticketComment.UserId = userId; ticketComment.User = user; ticketComment.TicketId = ticket.Id; ticketComment.CreatedDate = DateTime.UtcNow; TimeSpan elapsed = DateTime.UtcNow - ticketComment.CreatedDate; double hours = elapsed.TotalHours; double minutes = elapsed.TotalMinutes; string s = elapsed.ToString(); db.TicketComments.Add(ticketComment); TicketHistory th = new TicketHistory //filling in all the properties of ticket history { TicketId = ticket.Id, UserId = userId, Property = "Comment Added", OldValue = "N/A", NewValue = ticketComment.Comment, DateChanged = DateTime.Now, }; db.TicketHistories.Add(th); db.SaveChanges(); return(RedirectToAction("Details", "Tickets", new { id = Id })); } else { var Temporary = "You cannot add comments to this ticket. Please revisit your role assignment. Tickets can only be commented on by their creator, a developer assigned to the ticket, a project manager, or an administrator."; TempData["message"] = Temporary; } } return(RedirectToAction("Details", "Tickets", new { id = Id })); }
public async Task <ActionResult> Create([Bind(Include = "Id,UserId,Description,CreatedDate")] TicketAttachment ticketAttachment, HttpPostedFileBase File, int Id) { UserRolesHelper helper = new UserRolesHelper(db); ProjectAssignHelper ph = new ProjectAssignHelper(); var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var ticket = db.Tickets.Find(Id); if (ModelState.IsValid) { if (helper.IsUserInRole(userId, "Administrator") || helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Project Manager1") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Project Manager2") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Project Manager3") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Developer1") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer2") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer3") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer4") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Submitter") && ticket.SubmitterUserId == userId) { if (File != null) { TicketNotification TN = new TicketNotification(); TN.TicketId = ticket.Id; TN.UserId = ticket.AssignedToUserId; TN.User = ticket.AssignedToUser; db.TicketNotifications.Add(TN); var message = new IdentityMessage { Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been edited by" + " " + user.FirstName + user.LastName + "." + " " + "Please see the ticket history to view the specific change.", Subject = "Your ticket has been edited", Destination = TN.User.Email }; EmailService email = new EmailService(); await email.SendAsync(message); if (FileUploadValidator.IsWebFriendlyFile(File)) { var fileName = Path.GetFileName(File.FileName); var customName = string.Format(Guid.NewGuid() + fileName); File.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), customName)); ticketAttachment.FilePath = "/Uploads/" + customName; string filename = ticketAttachment.FilePath.ToString(); string word = ".docx"; string excel = ".xls"; string excelx = "xlsx"; string pdf = ".pdf"; string jpeg = ".jpg"; string bmp = ".bmp"; string gif = ".gif"; string zip = ".zip"; string rar = ".rar"; string ticketmessage = ""; if (filename.Contains(word)) { ticketmessage = "This is a Word Document"; } else if (filename.Contains(excel)) { ticketmessage = "This is an Excel File"; } else if (filename.Contains(pdf)) { ticketmessage = "This is an PDF File"; } else if (filename.Contains(jpeg)) { ticketmessage = "This is a JPEG File"; } else if (filename.Contains(bmp)) { ticketmessage = "This is a BMP File"; } else if (filename.Contains(gif)) { ticketmessage = "This is a .gif File"; } else if (filename.Contains(zip)) { ticketmessage = "This is an ZIP File"; } else if (filename.Contains(rar)) { ticketmessage = "This is a RAR File"; } else if (filename.Contains(excelx)) { ticketmessage = "This is an .xlsx File"; } ticketAttachment.CreatedDate = DateTimeOffset.Now; var ticketdatestring = ticketAttachment.CreatedDate.ToString("MM-dd-yyyy"); ticketAttachment.TicketId = Id; ticketAttachment.Description = ticketmessage + " " + "added by" + " " + user.FirstName + " " + user.LastName + " " + "on" + " " + ticketdatestring + "."; ticketAttachment.UserId = userId; db.TicketAttachments.Add(ticketAttachment); TicketHistory th = new TicketHistory //filling in all the properties of ticket history { TicketId = ticket.Id, UserId = userId, Property = "Attachment Added", OldValue = "N/A", NewValue = ticketAttachment.Description, DateChanged = DateTime.Now, }; db.TicketHistories.Add(th); db.SaveChanges(); } int id = Id; return(RedirectToAction("Details", "Tickets", new { id = id })); } else { var Temporary = "Please select an image between 1KB - 2MB and in an approved format(.jpg, .bmp, .png, .gif)"; TempData["attachmentmessage"] = Temporary; } } var Temporary3 = "You cannot edit this ticket. Please revisit your role assignment. Tickets can only be edited by their creator, a developer assigned to the ticket, a project manager, or an administrator."; TempData["message"] = Temporary3; return(RedirectToAction("Details", "Tickets", new { id = Id })); } ViewBag.TicketId = new SelectList(db.Tickets, "Id", "SubmitterUserId", ticketAttachment.TicketId); ViewBag.UserId = new SelectList(db.Users, "Id", "FirstName", ticketAttachment.UserId); return(View(ticketAttachment)); }