public User FindUserById(string id) { var user = _userManager.FindById(id); if (user != null && user.AllRoles.Count == 0) { var roles = _userManager.GetRoles(user.Id); user.AllRoles = _roleManager.Roles.Where(r => roles.Contains(r.Name)).ToList(); } return(user); }
public ActionResult AssignTicket(int?ticketId, string userId, bool add) { if (!ticketId.HasValue || string.IsNullOrEmpty(userId) || !ModelState.IsValid) { return(RedirectToAction(nameof(TicketsController.AllTickets))); } else { Ticket ticket = DbContext.Tickets .FirstOrDefault(p => p.Id == ticketId && !p.Project.Archived); ApplicationUser user = DbContext.Users .FirstOrDefault(p => p.Id == userId); if (add) { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Assignee", ticket.AssignedTo == null ? "None" : ticket.AssignedTo.Email, user.Email); NotificationService.Create(ticket, $"Ticket assigned to ${user.Email}"); DbContext.Histories.Add(history); ticket.AssignedTo = user; NotificationService.Create(ticket, $"This Ticket is assigned to you ->> ${ticket.AssignedTo.Email}"); } else { ticket.AssignedTo = null; } DbContext.SaveChanges(); return(RedirectToAction(nameof(UsersController.AllUsersForTickets), "Users")); } }
public User GetUser(DefaultUserManager userManager = null) { if (userManager == null) { userManager = HostConstObject.Container.Resolve <DefaultUserManager>(); } var user = userManager.FindById(Id); if (user == null) { user = new User { UserType = UserType, UserName = UserName, Email = Email, PhoneNumber = PhoneNumber, LockoutEnabled = false, DynamicToken = DynamicToken, MobileDevice = MobileDevice }; } else { user.UserType = UserType; user.UserName = UserName; user.Email = Email; user.PhoneNumber = PhoneNumber; user.DynamicToken = DynamicToken; user.MobileDevice = MobileDevice; } return(user); }
public ActionResult DeleteTicket(int?ticketId) { if (!ticketId.HasValue) { return(RedirectToAction(nameof(TicketsController.AllTickets))); } else { string userId = User.Identity.GetUserId(); ApplicationUser user = DefaultUserManager.FindById(userId); Ticket ticket = DbContext.Tickets .FirstOrDefault(p => p.Id == ticketId && !p.Project.Archived); if (User.IsInRole(Admin) || User.IsInRole(ProjectManager)) { DbContext.Tickets.Remove(ticket); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.AllTickets))); } else if (User.IsInRole(Submitter)) { if (ticket.CreatedBy == user) { DbContext.Tickets.Remove(ticket); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.AllTickets))); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else if (User.IsInRole(Developer)) { if (ticket.AssignedTo == user) { DbContext.Tickets.Remove(ticket); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.AllTickets))); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } }
public ApiResult LoginWithOAuth([FromBody] OAuthLoginModel oauthLoginModel) { var result = new ApiResult(); var oauth = _currencyService.GetSingleByConditon <UserOAuth>( o => o.OAuthType == oauthLoginModel.OAuthType && o.OAuthId == oauthLoginModel.OAuthId); if (oauth == null) { result.SetData(null); } else { var user = _userManager.FindById(oauth.MemberId); result = Login(oauthLoginModel.MobileDevice, user); } return(result); }
public ActionResult CreateTicket(TicketViewModel model) { string userId = User.Identity.GetUserId(); if (string.IsNullOrEmpty(userId)) { return(View(model)); } else { if (!ModelState.IsValid) { List <Project> projects = DbContext.Projects .Where(p => p.Users.Any(q => q.Id == userId) && !p.Archived) .Select(p => p) .ToList(); SelectList projectList = new SelectList(projects, "Id", "Name"); ViewData["projects"] = projectList; SelectList typeList = new SelectList(DbContext.TicketTypes, "Id", "Name"); ViewData["types"] = typeList; SelectList priorityList = new SelectList(DbContext.TicketPriorities, "Id", "Name"); ViewData["priorities"] = priorityList; return(View(model)); } int projectId = model.ProjectId; int priorityId = Convert.ToInt32(model.PriorityId); int typeId = model.TypeId; Ticket ticket = new Ticket() { Title = model.Title, Description = model.Description, Project = DbContext.Projects.Where(p => p.Id == projectId && !p.Archived).FirstOrDefault(), Priority = DbContext.TicketPriorities.Where(p => p.Id == priorityId).FirstOrDefault(), Type = DbContext.TicketTypes.Where(p => p.Id == typeId).FirstOrDefault(), Status = DbContext.TicketStatuses.Where(p => p.Name == "Open").FirstOrDefault(), CreatedBy = DefaultUserManager.FindById(User.Identity.GetUserId()) }; DbContext.Tickets.Add(ticket); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.MyTickets))); } }
public IdentityResult SetLockoutEnabled(string userId, bool enabled) { var result = _userManager.SetLockoutEnabled(userId, enabled); if (result.Succeeded) { var user = _userManager.FindById(userId); if (!enabled) { //修改令牌,屏蔽app访问 user.DynamicToken = KeyGenerator.GetGuidKey().ToString(); _userManager.Update(user); } Logger.Operation($"{(enabled ? "启用" : "禁用")}会员-{user.UserName}:{user.Id}", MemberBaseModule.Instance, SecurityLevel.Warning); //更新缓存 _signals.Trigger(_userContainer.UserChangedSignalName); _signals.Trigger($"member_{userId}_changed"); } return(result); }
public ApiResult ChangePhoneNumber(string id, [FromBody] ChangePhoneNumberModel member) { Argument.ThrowIfNullOrEmpty(member.PhoneNumber, "旧手机"); Argument.ThrowIfNullOrEmpty(member.SmsVerifyCode, "旧手机验证码"); Argument.ThrowIfNullOrEmpty(member.NewPhoneNumber, "新手机"); Argument.ThrowIfNullOrEmpty(member.NewSmsVerifyCode, "新手机验证码"); if (!AuthorizedUser.Id.Equals(id, StringComparison.OrdinalIgnoreCase)) { throw new WebApiInnerException("0001", "只允许修改自己手机"); } if (!_smsService.VerifyCode(member.PhoneNumber, member.SmsVerifyCode, MemberCenterModule.Instance, SmsRequestType.ChangePhoneNumber.ToString())) { throw new WebApiInnerException("0002", "旧手机短信验证码验证失败"); } if (!_smsService.VerifyCode(member.NewPhoneNumber, member.NewSmsVerifyCode, MemberCenterModule.Instance, SmsRequestType.ChangePhoneNumber.ToString())) { throw new WebApiInnerException("0003", "新手机短信验证码验证失败"); } //判断是否已经存在此手机号 var testUser = _userContainer.FindUser(member.NewPhoneNumber); if (testUser != null) { throw new WebApiInnerException("0004", "新手机已经注册,无法更改"); } var user = _userManager.FindById(id); user.UserName = member.NewPhoneNumber; user.PhoneNumber = member.NewPhoneNumber; var identityResult = _userManager.Update(user); if (identityResult.Succeeded) { //更新缓存 _signals.Trigger(_userContainer.UserChangedSignalName); _signals.Trigger($"member_{AuthorizedUser.Id}_changed"); } else { throw new WebApiInnerException("0005", "手机号修改失败"); } var result = new ApiResult(); return(result); }
public ActionResult Index() { Models.ApplicationUser user = DefaultUserManager.FindById(User.Identity.GetUserId()); HomeTicketAndProjectsViewModel model = new HomeTicketAndProjectsViewModel(); if (User.IsInRole(Submitter)) { model.Tickets = user.CreatedTickets; model.Projects = user.Projects; } else if (User.IsInRole(Developer)) { model.Tickets = user.AssignedTickets; model.Projects = user.Projects; } else { model.Tickets = DbContext.Tickets.Select(p => p).ToList(); model.Projects = DbContext.Projects.Where(p => !p.Archived).Select(p => p).ToList(); } return(View(model)); }
public ActionResult AddAttachment(AttachmentViewModel model, int ticketId) { if (ModelState.IsValid) { if (!Directory.Exists(FileHelper.MappedUploadFolder)) { Directory.CreateDirectory(FileHelper.MappedUploadFolder); } string fileName = model.file.FileName; string fullPathWithName = FileHelper.MappedUploadFolder + fileName; model.file.SaveAs(fullPathWithName); Attachment attachment = new Attachment() { FileUrl = FileHelper.UploadFolder + fileName, FileName = fileName, CreatedBy = DefaultUserManager.FindById(User.Identity.GetUserId()), Ticket = DbContext.Tickets.FirstOrDefault(p => p.Id == ticketId) }; ApplicationUser user = DefaultUserManager.FindById(User.Identity.GetUserId()); Ticket ticket = DbContext.Tickets.FirstOrDefault(p => p.Id == ticketId && !p.Project.Archived); if (User.IsInRole(Admin) || User.IsInRole(ProjectManager)) { NotificationService.Create(ticket, $"Ticket attachment added ->> {attachment.FileName}"); DbContext.Attachments.Add(attachment); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } else if (User.IsInRole(Submitter)) { if (ticket.CreatedBy == user) { NotificationService.Create(ticket, $"Ticket attachment added ->> {attachment.FileName}"); DbContext.Attachments.Add(attachment); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else if (User.IsInRole(Developer)) { if (ticket.AssignedTo == user) { NotificationService.Create(ticket, $"Ticket attachment added ->> {attachment.FileName}"); DbContext.Attachments.Add(attachment); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else { return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } } else { return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } }
public ActionResult EditTicket(TicketViewModel model, int?ticketId) { string userId = User.Identity.GetUserId(); if (!ModelState.IsValid || !ticketId.HasValue) { List <Project> projects = DbContext.Projects .Where(p => p.Users.Any(q => q.Id == userId) && !p.Archived) .Select(p => p) .ToList(); SelectList projectList = new SelectList(projects, "Id", "Name"); ViewData["projects"] = projectList; SelectList typeList = new SelectList(DbContext.TicketTypes, "Id", "Name"); ViewData["types"] = typeList; SelectList priorityList = new SelectList(DbContext.TicketPriorities, "Id", "Name"); ViewData["priorities"] = priorityList; SelectList statusList = new SelectList(DbContext.TicketStatuses, "Id", "Name"); ViewData["statuses"] = statusList; return(View(model)); } else { Ticket ticket = DbContext.Tickets .FirstOrDefault(p => p.Id == ticketId && !p.Project.Archived); if (ticket.Title != model.Title) { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Title", ticket.Title, model.Title); NotificationService.Create(ticket, $"Ticket title changed to {model.Title}"); DbContext.Histories.Add(history); ticket.Title = model.Title; } ; if (ticket.Description != model.Description) { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Description", ticket.Description, model.Description); NotificationService.Create(ticket, $"Ticket description changed to {model.Description}"); DbContext.Histories.Add(history); ticket.Description = model.Description; } ; Project project = DbContext.Projects.FirstOrDefault(p => p.Id == model.ProjectId && !p.Archived); if (ticket.Project != project) { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Project", ticket.Project.Name, project.Name); NotificationService.Create(ticket, $"Ticket Project changed to {project.Name}"); DbContext.Histories.Add(history); ticket.Project = project; } ; TicketType type = DbContext.TicketTypes.FirstOrDefault(p => p.Id == model.TypeId); if (ticket.Type != type) { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Type", ticket.Type.Name, type.Name); NotificationService.Create(ticket, $"Ticket type changed to {type.Name}"); DbContext.Histories.Add(history); ticket.Type = type; } ; int priorityId = Convert.ToInt32(model.PriorityId); TicketPriority priority = DbContext.TicketPriorities.FirstOrDefault(p => p.Id == priorityId); if (ticket.Priority != priority) { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Priority", ticket.Priority.Name, priority.Name); NotificationService.Create(ticket, $"Ticket priority changed to {priority.Name}"); DbContext.Histories.Add(history); ticket.Priority = priority; } ; TicketStatus status = DbContext.TicketStatuses.FirstOrDefault(p => p.Id == model.StatusId); if (User.IsInRole(Admin) || User.IsInRole(ProjectManager)) { if (ticket.Status != status) { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Status", ticket.Status.Name, status.Name); NotificationService.Create(ticket, $"Ticket status changed to {status.Name}"); DbContext.Histories.Add(history); ticket.Status = status; } ; } else { History history = HistoryService.Create(DefaultUserManager.FindById(User.Identity.GetUserId()), ticket, "Status", ticket.Status.Name, "Open"); NotificationService.Create(ticket, $"Ticket status changed to Open"); DbContext.Histories.Add(history); ticket.Status = DbContext.TicketStatuses.FirstOrDefault(p => p.Name == "Open"); }; ticket.DateUpdated = DateTime.Now; DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.AllTickets))); } }
public ActionResult EditTicket(int?ticketId) { string userId = User.Identity.GetUserId(); if (!ticketId.HasValue && string.IsNullOrEmpty(userId)) { return(RedirectToAction(nameof(TicketsController.AllTickets))); } else { Ticket ticket = DbContext.Tickets .FirstOrDefault(p => p.Id == ticketId && !p.Project.Archived); TicketViewModel model = new TicketViewModel { Id = ticket.Id, Title = ticket.Title, Description = ticket.Description, Project = ticket.Project, Type = ticket.Type, Priority = ticket.Priority, Status = ticket.Status, AssignedTo = ticket.AssignedTo, }; List <Project> projects = DbContext.Projects .Where(p => p.Users.Any(q => q.Id == userId) && !p.Archived) .Select(p => p) .ToList(); SelectList projectList = new SelectList(projects, "Id", "Name"); ViewData["projects"] = projectList; SelectList typeList = new SelectList(DbContext.TicketTypes, "Id", "Name"); ViewData["types"] = typeList; SelectList priorityList = new SelectList(DbContext.TicketPriorities, "Id", "Name"); ViewData["priorities"] = priorityList; SelectList statusList = new SelectList(DbContext.TicketStatuses, "Id", "Name"); ViewData["statuses"] = statusList; ApplicationUser user = DefaultUserManager.FindById(userId); if (User.IsInRole(Admin) || User.IsInRole(ProjectManager)) { return(View(model)); } else if (User.IsInRole(Submitter)) { if (ticket.CreatedBy == user) { return(View(model)); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else if (User.IsInRole(Developer)) { if (ticket.AssignedTo == user) { return(View(model)); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } }
public ActionResult AddComment(CommentViewModel model, int ticketId) { if (!ModelState.IsValid) { return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId })); } ApplicationUser user = DefaultUserManager.FindById(User.Identity.GetUserId()); Ticket ticket = DbContext.Tickets.FirstOrDefault(p => p.Id == ticketId && !p.Project.Archived); Comment comment = new Comment() { Title = model.Title, CreatedBy = user, Ticket = ticket }; if (User.IsInRole(Admin) || User.IsInRole(ProjectManager)) { NotificationService.Create(ticket, $"Ticket comment added ->> {comment.Title}"); DbContext.Comments.Add(comment); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } else if (User.IsInRole(Submitter)) { if (ticket.CreatedBy == user) { NotificationService.Create(ticket, $"Ticket comment added ->> {comment.Title}"); DbContext.Comments.Add(comment); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else if (User.IsInRole(Developer)) { if (ticket.AssignedTo == user) { NotificationService.Create(ticket, $"Ticket comment added ->> {comment.Title}"); DbContext.Comments.Add(comment); DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } else { return(RedirectToAction(nameof(TicketsController.AllTickets))); } } else { return(RedirectToAction(nameof(TicketsController.Details), "Tickets", new { ticketId = model.Id })); } }