예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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();
                }
            }
        }
예제 #3
0
        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
                }));
            }
        }
예제 #4
0
        /// <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);
            }
        }