using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Mvc; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity; using HealthchoiceMVC.Services; using HealthchoiceMVC.Models; using HealthchoiceMVC.NonDbModels; namespace HealthchoiceMVC.Controllers { [Authorize] public class CommonController : Controller { private HCLocalService service = new HCLocalService(); [HttpPost] public async Task AddUserRole(string Id, string Role) { int roleKey = Convert.ToInt32(Role); string userRoleDesc = ""; List rolesToRemove = new List(); string role = service.GetUserRoleValueByKey(roleKey); using (var context = new ApplicationDbContext()) { var userStore = new UserStore(context); var userManager = new UserManager(userStore); ApplicationUser applicationUser = context.Users.Find(Id); await userManager.AddToRoleAsync(Id, role); var userRoles = userManager.GetRoles(Id); List roleList = service.GetUserRolesByType(applicationUser.AccountType); foreach (var item in roleList) { foreach (var userRole in userRoles) { userRoleDesc = service.GetUserRoleDescByValue(userRole); if (item.Text == userRoleDesc) { rolesToRemove.Add(item); } } } if (roleList.Count() == 1) //to get rid of the please select { foreach (var item in roleList) { rolesToRemove.Add(item); } } foreach (var item in rolesToRemove) { roleList.Remove(item); } var result = new { RoleList = roleList, UserRoles = userRoles }; return Json(result, JsonRequestBehavior.AllowGet); } } public async Task DeleteUserRole(string Id, string Role) { int roleKey = service.GetUserRoleKeyByValue(Role); string userRoleDesc = ""; List rolesToRemove = new List(); string role = service.GetUserRoleValueByKey(roleKey); using (var context = new ApplicationDbContext()) { var userStore = new UserStore(context); var userManager = new UserManager(userStore); ApplicationUser applicationUser = context.Users.Find(Id); await userManager.RemoveFromRoleAsync(Id, role); var userRoles = userManager.GetRoles(Id); List roleList = service.GetUserRolesByType(applicationUser.AccountType); foreach (var item in roleList) { foreach (var userRole in userRoles) { userRoleDesc = service.GetUserRoleDescByValue(userRole); if (item.Text == userRoleDesc) { rolesToRemove.Add(item); } } } if (roleList.Count() == 1) //to get rid of the please select { foreach (var item in roleList) { rolesToRemove.Add(item); } } foreach (var item in rolesToRemove) { roleList.Remove(item); } var result = new { RoleList = roleList, UserRoles = userRoles }; return Json(result, JsonRequestBehavior.AllowGet); } } public ActionResult GetUserRolesByType(string user_type) { int userType = Convert.ToInt32(user_type); List UserRoles = new List(service.GetUserRolesByType(userType)); return Json(UserRoles, JsonRequestBehavior.AllowGet); } public ActionResult GetUserRoles() { IList userRoles = null; using (var context = new ApplicationDbContext()) { var userStore = new UserStore(context); var userManager = new UserManager(userStore); userRoles = userManager.GetRoles(User.Identity.GetUserId()); } List UserRoles = new List(service.GetUserRolesByRoleArray(userRoles)); return Json(UserRoles, JsonRequestBehavior.AllowGet); } [AllowAnonymous] public ActionResult GetSubDisciplinesByDisciplineCode(string disciplineCode) { int disciplineCodeInt = Convert.ToInt32(disciplineCode); List SubDisciplineList = new List(service.GetSubDisciplinesByDisciplineCode(disciplineCodeInt)); return Json(SubDisciplineList, JsonRequestBehavior.AllowGet); } [AllowAnonymous] public ActionResult GetPracticeIdFromCode(string practiceNumber) { var practiceId = service.GetPracticeIdFromCode(practiceNumber); return Json(practiceId); } } }