/// <summary> /// Method for adding a new user /// </summary> /// <param name="newUserAc"></param> /// <returns></returns> public async Task AddNewUserAsync(AddUserAc newUserAc, ApplicationUser currentUser) { // Add new user ApplicationUser newUser = new ApplicationUser { Name = newUserAc.Name, Email = newUserAc.Email, UserName = newUserAc.Email, CreatedOn = DateTime.UtcNow, CreatedBy = currentUser.Id }; await _userManager.CreateAsync(newUser, newUserAc.Password); // Add user institute UserInstituteMapping userInstituteMapping = new UserInstituteMapping { InstituteId = newUserAc.InstituteId, UserId = newUser.Id, CreatedOn = DateTime.UtcNow }; _iMSDbContext.UserInstituteMappings.Add(userInstituteMapping); await _iMSDbContext.SaveChangesAsync(); // Add user role foreach (int userGroupId in newUserAc.UserGroupIdList) { UserGroup userGroup = await _iMSDbContext.UserGroups.FirstOrDefaultAsync(x => x.Id == userGroupId); if (userGroup != null) { UserGroupMapping userRolesMapping = new UserGroupMapping { UserGroupId = userGroup.Id, UserId = newUser.Id, CreatedOn = DateTime.UtcNow }; _iMSDbContext.UserGroupMapping.Add(userRolesMapping); await _iMSDbContext.SaveChangesAsync(); } } // Send welcome mail to the created user if (newUserAc.Email != null) { await SendWelcomeMail(new WelcomeMailToUserAc { Name = newUserAc.Name, Password = newUserAc.Password }, newUserAc.Email, newUserAc.Name); } }
/// <summary> /// Method for updating an existing user /// </summary> /// <param name="id"></param> /// <param name="updatedUserAc"></param> /// <returns></returns> public async Task UpdateUserAsync(string id, UpdateUserAc updatedUserAc, ApplicationUser currentUser) { // Update user details ApplicationUser existingUser = _iMSDbContext.Users.First(x => x.Id.Equals(id)); existingUser.UpdatedBy = currentUser.Id; existingUser.UpdatedOn = DateTime.UtcNow; existingUser.Name = updatedUserAc.Name; await _userManager.UpdateAsync(existingUser); // Add user institute UserInstituteMapping existingUserInstituteMapping = await _iMSDbContext.UserInstituteMappings.FirstOrDefaultAsync(x => x.UserId == id && x.InstituteId == updatedUserAc.InstituteId); if (existingUserInstituteMapping == null) { UserInstituteMapping userInstituteMapping = new UserInstituteMapping { InstituteId = updatedUserAc.InstituteId, UserId = existingUser.Id, CreatedOn = DateTime.UtcNow }; _iMSDbContext.UserInstituteMappings.Add(userInstituteMapping); await _iMSDbContext.SaveChangesAsync(); } // Update user role, if updated List <UserGroupMapping> userRolesMappingsList = await _iMSDbContext.UserGroupMapping.Where(x => x.UserId.Equals(existingUser.Id)).ToListAsync(); _iMSDbContext.UserGroupMapping.RemoveRange(userRolesMappingsList); await _iMSDbContext.SaveChangesAsync(); foreach (int userGroupId in updatedUserAc.UserGroupIdList) { UserGroup userGroup = await _iMSDbContext.UserGroups.FirstOrDefaultAsync(x => x.Id == userGroupId); if (userGroup != null) { UserGroupMapping userRolesMapping = new UserGroupMapping { UserGroupId = userGroup.Id, UserId = existingUser.Id, CreatedOn = DateTime.UtcNow }; _iMSDbContext.UserGroupMapping.Add(userRolesMapping); await _iMSDbContext.SaveChangesAsync(); } } }
public async Task <IActionResult> GetActivitiesForAllStudentsAsync() { ApplicationUser currentUser = await GetLoggedInUserAsync(); UserInstituteMapping userInstituteMapping = await _iMSDbContext.UserInstituteMappings.FirstOrDefaultAsync(x => x.UserId == currentUser.Id); if (userInstituteMapping == null) { return(BadRequest(new ApiServiceResponse() { Status = -100, Message = "Un-authorized to get detail, you doesn't belong to this institute" })); } else { List <StaffActivity> studentActivityList = await _staffActivityManagementRepository.GetActivitiesForStudentAsync(userInstituteMapping.InstituteId, null); return(Ok(new ApiServiceResponse { Status = 200, Message = "Success", ResultObj = studentActivityList })); } }
/// <summary> /// Method to add institute - SS /// </summary> /// <param name="addInstitute">institute information</param> public async Task AddInstituteAsync(AddInstituteAc addInstitute) { var user = await _userManager.FindByEmailAsync(addInstitute.InstituteAdminEmail); var isUserExist = (user != null); var randomPassword = RandomString(); var superAdmin = await _userManager.FindByEmailAsync(_superAdmin.Email); if (!isUserExist) { user = new ApplicationUser() { CreatedOn = DateTime.UtcNow, UpdatedOn = DateTime.UtcNow, CreatedBy = superAdmin.Id, UpdatedBy = superAdmin.Id, Name = "Admin", Email = addInstitute.InstituteAdminEmail, UserName = addInstitute.InstituteAdminEmail }; await _userManager.CreateAsync(user, randomPassword); } await _userManager.AddToRoleAsync(user, "Admin"); var institute = new Institute() { CreatedOn = DateTime.UtcNow, Name = addInstitute.InstituteName, Address = addInstitute.Address, Code = addInstitute.Code, Location = addInstitute.Location, AdminId = user.Id, Latitude = addInstitute.Latitude, Longitude = addInstitute.Longitude }; _iMSDbContext.Institutes.Add(institute); await _iMSDbContext.SaveChangesAsync(); #region User Institute Mapping var userInstituteMapping = new UserInstituteMapping() { CreatedOn = DateTime.UtcNow, InstituteId = institute.Id, UserId = user.Id, IsActive = false }; _iMSDbContext.UserInstituteMappings.Add(userInstituteMapping); await _iMSDbContext.SaveChangesAsync(); List <UserInstituteMapping> users = new List <UserInstituteMapping>(); foreach (var userId in addInstitute.Users) { if (!await _iMSDbContext.UserInstituteMappings.AnyAsync(x => x.InstituteId == institute.Id && x.UserId == userId)) { var userEmail = (await _iMSDbContext.Users.FirstAsync(x => x.Id == userId)).Email; users.Add(new UserInstituteMapping() { CreatedOn = DateTime.UtcNow, InstituteId = institute.Id, IsActive = false, UserId = userId }); if (!string.IsNullOrEmpty(userEmail)) { await SendMailForExistingUser(new WelcomeMailToAdminAc() { Password = randomPassword, InstituteName = institute.Name }, userEmail, institute.Id); } } } _iMSDbContext.UserInstituteMappings.AddRange(users); await _iMSDbContext.SaveChangesAsync(); #endregion var mapping = new List <InstituteBccCcEmailMapping>(); addInstitute.Bcc.ForEach(x => { mapping.Add(new InstituteBccCcEmailMapping() { CreatedOn = DateTime.UtcNow, Email = x, InstituteId = institute.Id, IsBcc = true }); }); addInstitute.Cc.ForEach(x => { mapping.Add(new InstituteBccCcEmailMapping() { CreatedOn = DateTime.UtcNow, Email = x, InstituteId = institute.Id, IsBcc = false }); }); if (mapping.Count != 0) { _iMSDbContext.InstituteBccCcEmailMappings.AddRange(mapping); await _iMSDbContext.SaveChangesAsync(); } await _teachingStaffManagementRepository.SeedTeachingStaffAsync(institute.Id); await _rolePermissionSeed.SeedPermissionAsync(institute.Id); await _disciplinaryStatusManagementRepository.SeedDisciplinaryStatusAsync(institute.Id); var adminUserGroup = await _iMSDbContext.UserGroups.FirstAsync(x => x.Code == "Admin"); _iMSDbContext.UserGroupMapping.Add(new UserGroupMapping() { CreatedOn = DateTime.UtcNow, UserGroupId = adminUserGroup.Id, UserId = user.Id }); await _iMSDbContext.SaveChangesAsync(); if (!isUserExist) { await SendMailForNewUser(new WelcomeMailToAdminAc() { Password = randomPassword, InstituteName = institute.Name }, addInstitute.InstituteAdminEmail, institute.Id); } else { await SendMailForExistingUser(new WelcomeMailToAdminAc() { Password = randomPassword, InstituteName = institute.Name }, addInstitute.InstituteAdminEmail, institute.Id); } }