public async Task <UserForListDto> GetUserAsync(string email)
        {
            var spec = new UserWithCampusAndDepartmentAndDegreeSpecification(email);
            var user = await userDal.GetEntityWithSpecAsync(spec);

            if (user == null)
            {
                throw new RestException(HttpStatusCode.BadRequest, new { UserNotFound = Messages.UserNotFound });
            }

            var userForReturn = mapper.Map <User, UserForListDto>(user);

            return(userForReturn);
        }
        public async Task <UserForListDto> Update(UserForRegisterDto userForRegisterDto)
        {
            var userFromRepo = await userDal.GetAsync(x => x.Email == userForRegisterDto.Email);

            if (userFromRepo == null)
            {
                throw new RestException(HttpStatusCode.BadRequest, new { UserNotFound = Messages.UserNotFound });
            }

            var userForUpdate = mapper.Map(userForRegisterDto, userFromRepo);



            var userUpdate = await userDal.Update(userForUpdate);

            var spec = new UserWithCampusAndDepartmentAndDegreeSpecification(userUpdate.Email);
            var user = await userDal.GetEntityWithSpecAsync(spec);

            var chekcPublicRoles = await announceStatusCheck.CheckPublicRole(roleDal, roleCategoryDal);

            var userRolePublic = await userRoleDal.GetAsync(x => x.Role.Name.ToLower() == "public");

            if (user.IsActive)
            {
                if (userRolePublic == null)
                {
                    userRolePublic = new UserRole
                    {
                        UserId = user.Id,
                        RoleId = chekcPublicRoles.Id
                    };
                    await userRoleDal.Add(userRolePublic);
                }
            }
            else if (!user.IsActive)
            {
                if (userRolePublic != null)
                {
                    await userRoleDal.Delete(userRolePublic);
                }
            }
            return(mapper.Map <User, UserForListDto>(user));
        }