/// <summary> /// Set the users district back to its default /// </summary> public void ResetUserDistrict() { int?userId = GetCurrentUserId(); // get default district (if one exists) UserDistrict userDistrict = _context.UserDistricts.AsNoTracking() .Include(x => x.User) .Include(x => x.District) .FirstOrDefault(x => x.IsPrimary && x.User.Id == userId); if (userDistrict == null) { // get first user district userDistrict = _context.UserDistricts.AsNoTracking() .Include(x => x.User) .Include(x => x.District) .FirstOrDefault(x => x.User.Id == userId); } if (userDistrict != null) { User user = _context.Users.First(a => a.Id == userId); user.DistrictId = userDistrict.DistrictId; _context.SaveChanges(); } }
/// <summary> /// Delete user district /// </summary> /// <param name="id">id of user district to delete</param> /// <response code="200">OK</response> public virtual IActionResult UserDistrictsIdDeletePostAsync(int id) { bool exists = _context.UserDistricts.Any(a => a.Id == id); if (exists) { UserDistrict item = _context.UserDistricts .Include(x => x.User) .First(a => a.Id == id); int userId = item.User.Id; // remove record _context.UserDistricts.Remove(item); // save the changes _context.SaveChanges(); // return the updated user district records List <UserDistrict> userDistricts = _context.UserDistricts .Include(x => x.User) .Include(x => x.District) .Where(x => x.User.Id == userId) .ToList(); return(new ObjectResult(new HetsResponse(userDistricts))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }
/// <summary> /// Switch user district /// </summary> /// <param name="id">id of user district to switch to</param> /// <response code="200">OK</response> public virtual IActionResult UserDistrictsIdSwitchPostAsync(int id) { bool exists = _context.UserDistricts.Any(a => a.Id == id); if (exists) { UserDistrict userDistrict = _context.UserDistricts.First(a => a.Id == id); if (userDistrict == null) { // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } int?userId = GetCurrentUserId(); User user = _context.Users.First(a => a.Id == userId); user.DistrictId = userDistrict.DistrictId; _context.SaveChanges(); return(new ObjectResult(new HetsResponse(user))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }
/// <summary> /// Create user /// </summary> /// <param name="item"></param> /// <remarks>Create new user</remarks> /// <response code="200">User created</response> public virtual IActionResult UsersPostAsync(UserViewModel item) { User user = new User { Active = item.Active, Email = item.Email, GivenName = item.GivenName, Surname = item.Surname, District = item.District, SmUserId = item.SmUserId }; UserDistrict newUserDistrict = new UserDistrict { UserId = item.Id, DistrictId = item.District.Id }; if (user.UserDistricts == null) { user.UserDistricts = new List <UserDistrict>(); newUserDistrict.IsPrimary = true; } user.UserDistricts.Add(newUserDistrict); AdjustUser(user); bool exists = _context.Users.Any(x => x.Id == user.Id); if (exists) { _context.Users.Update(user); } else { _context.Users.Add(user); } _context.SaveChanges(); return(new ObjectResult(new HetsResponse(user))); }
public void Delete(UserDistrict userProperty) { _context.Remove(userProperty); }
public async Task AddAsync(UserDistrict userProperty) { await _context.AddAsync(userProperty); }
public virtual IActionResult UserDistrictsIdPost([FromRoute] int id, [FromBody] UserDistrict item) { return(_service.UserDistrictsIdPostAsync(id, item)); }
/// <summary> /// Update or create a user district record /// </summary> /// <remarks>Update or create a user district record</remarks> /// <param name="id">id of UserDistrict for updating</param> /// <param name="item">User District.</param> /// <response code="200">OK</response> public virtual IActionResult UserDistrictsIdPostAsync(int id, UserDistrict item) { if (id != item.Id) { // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } if (item.User == null) { // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } int userId = item.User.Id; List <UserDistrict> userDistricts = _context.UserDistricts .Include(x => x.User) .Include(x => x.District) .Where(x => x.User.Id == userId) .ToList(); bool districtExists; bool hasPrimary = false; // add or update user district if (item.Id > 0) { int index = userDistricts.FindIndex(a => a.Id == item.Id); if (index < 0) { // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } // check if this district already exists districtExists = userDistricts.Exists(a => a.District.Id == item.District.Id && a.Id != item.Id); // update the record if (!districtExists) { if (item.User != null) { userDistricts[index].UserId = item.User.Id; } else { // user required return(new ObjectResult(new HetsResponse("HETS-17", ErrorViewModel.GetDescription("HETS-17", _configuration)))); } if (item.District != null) { userDistricts[index].DistrictId = item.District.Id; } else { // district required return(new ObjectResult(new HetsResponse("HETS-18", ErrorViewModel.GetDescription("HETS-18", _configuration)))); } // manage the primary attribute if (item.IsPrimary) { userDistricts[index].IsPrimary = true; foreach (UserDistrict existingUserDistrict in userDistricts) { if (existingUserDistrict.IsPrimary && existingUserDistrict.Id != item.Id) { existingUserDistrict.IsPrimary = false; break; } } } else { userDistricts[index].IsPrimary = false; foreach (UserDistrict existingUserDistrict in userDistricts) { if (existingUserDistrict.IsPrimary && existingUserDistrict.Id != item.Id) { hasPrimary = true; break; } } if (!hasPrimary) { userDistricts[index].IsPrimary = true; } } } } else // add user district { // check if this district already exists districtExists = userDistricts.Exists(a => a.District.Id == item.District.Id); // add the record if (!districtExists) { if (item.User != null) { item.User = _context.Users.FirstOrDefault(a => a.Id == item.User.Id); } else { // user required return(new ObjectResult(new HetsResponse("HETS-17", ErrorViewModel.GetDescription("HETS-17", _configuration)))); } if (item.District != null) { item.District = _context.Districts.FirstOrDefault(a => a.Id == item.District.Id); } else { // district required return(new ObjectResult(new HetsResponse("HETS-18", ErrorViewModel.GetDescription("HETS-18", _configuration)))); } if (item.IsPrimary) { item.IsPrimary = true; foreach (UserDistrict existingUserDistrict in userDistricts) { if (existingUserDistrict.IsPrimary) { existingUserDistrict.IsPrimary = false; break; } } } else { item.IsPrimary = false; foreach (UserDistrict existingUserDistrict in userDistricts) { if (existingUserDistrict.IsPrimary) { hasPrimary = true; break; } } if (!hasPrimary) { item.IsPrimary = true; } } _context.UserDistricts.Add(item); } } _context.SaveChanges(); // ************************************************************************** // return the updated user district records // ************************************************************************** List <UserDistrict> results = _context.UserDistricts.AsNoTracking() .Include(x => x.User) .Include(x => x.District) .Where(x => x.User.Id == userId) .ToList(); return(new ObjectResult(new HetsResponse(results))); }
/// <summary> /// Update user /// </summary> /// <remarks>Updates a user</remarks> /// <param name="id">id of User to update</param> /// <param name="item"></param> /// <response code="200">OK</response> public virtual IActionResult UsersIdPutAsync(int id, UserViewModel item) { User user = _context.Users .Include(x => x.District) .Include(x => x.UserDistricts) .Include(x => x.UserRoles) .ThenInclude(y => y.Role) .ThenInclude(z => z.RolePermissions) .ThenInclude(z => z.Permission) .FirstOrDefault(x => x.Id == id); // record not found if (user == null) { return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } user.Active = item.Active; user.Email = item.Email; user.GivenName = item.GivenName; user.Surname = item.Surname; user.SmUserId = item.SmUserId; if (item.District != null) { bool districtExists = _context.Districts.Any(x => x.Id == item.District.Id); if (districtExists) { District district = _context.Districts .Include(x => x.Region) .First(x => x.Id == item.District.Id); user.DistrictId = district.Id; // check if we need to add this to the User District List too bool userDistrictExists = false; foreach (UserDistrict userDistrict in user.UserDistricts) { if (userDistrict.DistrictId == item.District.Id) { userDistrictExists = true; break; } } // if not found - then add it! if (!userDistrictExists) { UserDistrict newUserDistrict = new UserDistrict { UserId = item.Id, DistrictId = district.Id }; if (user.UserDistricts == null) { user.UserDistricts = new List <UserDistrict>(); newUserDistrict.IsPrimary = true; } user.UserDistricts.Add(newUserDistrict); } } } // save changes _context.Users.Update(user); _context.SaveChanges(); // update the data to be returned user = _context.Users .Include(x => x.District) .Include(x => x.UserDistricts) .Include(x => x.UserRoles) .ThenInclude(y => y.Role) .ThenInclude(z => z.RolePermissions) .ThenInclude(z => z.Permission) .FirstOrDefault(x => x.Id == id); return(new ObjectResult(new HetsResponse(user.ToViewModel()))); }
public IHttpActionResult Post([FromBody] UserModel model) { if (!Msisdn.IsValid(model.MobileNumber, Country)) { return(this.BadRequestEx(Error.MobileNumberInvalid)); } using (var dbContext = new DataContext()) { var user = new User(); user.FirstName = model.FirstName; user.LastName = model.LastName; user.Email = model.Email; user.MobileNumber = model.MobileNumber; user.Status = Data.Enums.Status.Active; user.CreatedTimestamp = DateTime.Now; user.IsOfficer = model.IsOfficer ? "1" : "0"; user.ExternalID = model.ExternalID; dbContext.Users.Add(user); if (model.Districts != null) { foreach (var districtModel in model.Districts) { var district = dbContext.Districts.Find(districtModel.ID); if (district == null) { continue; } var userDistrict = new UserDistrict(); userDistrict.District = district; userDistrict.User = user; dbContext.UserDistricts.Add(userDistrict); } } var userName = Kapsch.Core.Cryptography.Random.GenerateConcatenatedString(model.FirstName.Substring(0, 1), model.LastName); while (true) { if (!dbContext.Credentials.Any(f => f.UserName == userName)) { break; } userName = Kapsch.Core.Cryptography.Random.GenerateConcatenatedString(model.FirstName.Substring(0, 1), model.LastName); } Random random = new Random(); var credential = new Credential(); credential.CreatedTimeStamp = DateTime.Now; credential.EntityID = user.ID; credential.EntityType = Data.Enums.EntityType.User; credential.ExpiryTimeStamp = DateTime.Now.AddYears(20); credential.Status = Data.Enums.Status.Active; credential.UserName = userName; credential.Password = Membership.GeneratePassword(8, 0); credential.Password = Regex.Replace(credential.Password, @"[^a-zA-Z0-9]", m => random.Next(0, 9).ToString()); dbContext.Credentials.Add(credential); if (model.SystemFunctions != null) { foreach (var systemFunctionModel in model.SystemFunctions) { var systemFunction = dbContext.SystemFunctions.Find(systemFunctionModel.ID); if (systemFunction == null) { continue; } var userSystemFunction = new CredentialSystemFunction(); userSystemFunction.SystemFunction = systemFunction; userSystemFunction.Credential = credential; userSystemFunction.Status = Data.Enums.Status.Active; dbContext.CredentialSystemFunctions.Add(userSystemFunction); } } dbContext.SaveChanges(); var logo = string.Format("{0}/Images/IMS-logo-180x66-1color.png", UserManagementPortal); var personalizations = new Dictionary <string, string>(); personalizations.Add("website", UserManagementPortal); personalizations.Add("logo", logo); personalizations.Add("fullName", string.Format("{0} {1}", user.FirstName, user.LastName)); personalizations.Add("userName", credential.UserName); personalizations.Add("password", credential.Password); //EmailHelper.Send( // HttpContext.Current.Server.MapPath("~/MailTemplates"), // new[] { model.Email }, // "Account Created", // "AccountCreated.txt", // personalizations); var company = dbContext.Companies.FirstOrDefault(f => f.Name == "Intelligent Mobility Solutions"); // IMS if (company == null) { Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("Unable to get company, Intelligent Mobility Solutions, from database.")); } else { SmsHelper.Send( dbContext, "User Management", "Create User", new Router() { Source = "IMS", Target = new Msisdn(user.MobileNumber, Country).ToString(Msisdn.Format.International) }, company, user, HttpContext.Current.Server.MapPath("~/MailTemplates"), "SmsAccountCreated.txt", personalizations); } model.ID = user.ID; model.UserName = credential.UserName; model.Status = (Models.Enums.UserStatus)user.Status; model.CreatedTimestamp = user.CreatedTimestamp; return(Ok(model)); } }
public IHttpActionResult Put([FromBody] UserModel model) { if (!Msisdn.IsValid(model.MobileNumber, Country)) { return(this.BadRequestEx(Error.MobileNumberInvalid)); } using (var dbContext = new DataContext()) { var credential = dbContext.Credentials .Include(f => f.User) .Include(f => f.CredentialSystemFunctions) .SingleOrDefault(f => f.EntityID == model.ID && f.EntityType == Data.Enums.EntityType.User); if (credential == null) { return(this.BadRequestEx(Error.UserDoesNotExist)); } User user = credential.User; user.FirstName = model.FirstName; user.LastName = model.LastName; user.Email = model.Email; user.MobileNumber = model.MobileNumber; user.Status = (Data.Enums.Status)model.Status; user.IsOfficer = model.IsOfficer ? "1" : "0"; user.ExternalID = model.ExternalID; credential.CredentialSystemFunctions.ToList().ForEach(f => dbContext.CredentialSystemFunctions.Remove(f)); foreach (var systemFunctionModel in model.SystemFunctions) { var systemFunction = dbContext.SystemFunctions.Find(systemFunctionModel.ID); if (systemFunction == null) { continue; } var userSystemFunction = new CredentialSystemFunction(); userSystemFunction.SystemFunction = systemFunction; userSystemFunction.Credential = credential; userSystemFunction.Status = Data.Enums.Status.Active; dbContext.CredentialSystemFunctions.Add(userSystemFunction); } user.UserDistricts.ToList().ForEach(f => dbContext.UserDistricts.Remove(f)); foreach (var districtModel in model.Districts) { var district = dbContext.Districts.Find(districtModel.ID); if (district == null) { continue; } var userDistrict = new UserDistrict(); userDistrict.District = district; userDistrict.User = user; dbContext.UserDistricts.Add(userDistrict); } dbContext.SaveChanges(); return(Ok()); } }