示例#1
0
        private List <UserUserRole> ExecuteUserUserUserRoleSqlCmd(SqlConnection sqlConnection, SqlCommand cmd)
        {
            List <UserUserRole> returnedList = new List <UserUserRole>();

            try
            {
                sqlConnection.Open();
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        UserUserRole userUserRole = new UserUserRole();
                        userUserRole.UserId     = reader.GetFieldValue <int>(0);
                        userUserRole.UserRoleId = reader.GetFieldValue <int>(0);
                        returnedList.Add(userUserRole);
                    }
                };
            }
            catch (Exception ex)
            {
                _logger.ErrorMessage(ex);
            }
            finally
            {
                sqlConnection.Close();
            }

            return(returnedList);
        }
示例#2
0
        public User Create(RegisterUserPostDto userNew)
        {
            // TODO: how to store the user that added the expense as a field in Expense?
            User toAdd = RegisterUserPostDto.ToUser(userNew);

            context.Users.Add(toAdd);
            context.SaveChanges();
            context.Users.Attach(toAdd);

            UserRole role = new UserRole
            {
                Id   = 1,
                Name = RoleConstants.REGULAR
            };

            UserUserRole history = new UserUserRole
            {
                UserRole  = role,
                StartTime = DateTime.Now
            };

            List <UserUserRole> list = new List <UserUserRole>
            {
                history
            };

            context.UserRoles.Add(role);
            context.UserRoles.Attach(role);

            toAdd.UserUserRoles = list;

            context.SaveChanges();

            return(toAdd);
        }
        public ErrorsCollection GiveNewRoleToUser(int userId, RoleIdModel roleIdModel)
        {
            var errors = roleValidator.ValidateRole(roleIdModel, context);

            if (errors != null)
            {
                return(errors);
            }

            var now = DateTime.Now;

            UserUserRole newUserRole = new UserUserRole
            {
                UserId     = userId,
                UserRoleId = roleIdModel.RoleId,
                StartTime  = now,
                EndTime    = null
            };

            UserUserRole userUserRoleForUser = context.UserUserRoles.FirstOrDefault(r => r.UserId == userId && r.EndTime == null);

            userUserRoleForUser.EndTime = now;

            context.UserUserRoles.Add(newUserRole);
            context.SaveChanges();
            return(null);
        }
示例#4
0
 public static UseUserRoleGetModel ToUseUserRoleGetModel(UserUserRole userUserRole)
 {
     return(new UseUserRoleGetModel
     {
         Username = userUserRole.User.Username,
         RoleTitle = userUserRole.UserRole.Name,
         AllocatedAt = userUserRole.StartTime,
         RemovedAt = userUserRole.EndTime
     });
 }
示例#5
0
 public PermissionGetModel PermissionHelper(UserUserRole userModel)
 {
     return(new PermissionGetModel
     {
         Id = userModel.Id,
         UserRole = userModel.UserRole.Name,
         StartTime = userModel.StartTime,
         EndTime = userModel.EndTime
     });
 }
示例#6
0
 public static UserUserRoleGetModel FromUserUserRole(UserUserRole userUserRole)
 {
     return(new UserUserRoleGetModel
     {
         Id = userUserRole.Id,
         UserId = userUserRole.UserId,
         UserRoleId = userUserRole.UserRoleId,
         UserRoleName = userUserRole.UserRole.Name,
         StartTime = userUserRole.StartTime,
         EndTime = userUserRole.EndTime
     });
 }
示例#7
0
        public GetUserDto Register(RegisterUserPostDto register)
        {
            User existing = context.Users.FirstOrDefault(u => u.Username == register.Username);

            if (existing != null)
            {
                return(null);
            }
            User user = new User
            {
                Email     = register.Email,
                FullName  = register.FullName,
                Password  = ComputeSha256Hash(register.Password),
                Username  = register.Username,
                CreatedAt = DateTime.Now
            };

            context.Users.Add(user);
            context.SaveChanges();
            context.Users.Attach(user);

            UserRole role = new UserRole
            {
                Id   = 1,
                Name = RoleConstants.REGULAR
            };

            UserUserRole history = new UserUserRole
            {
                UserRole  = role,
                StartTime = DateTime.Now
            };

            List <UserUserRole> list = new List <UserUserRole>
            {
                history
            };

            context.UserRoles.Add(role);
            context.UserRoles.Attach(role);

            user.UserUserRoles = list;

            context.SaveChanges();

            return(Authenticate(register.Username, register.Password));
        }
示例#8
0
        public object Delete(int userId, int idPermission)
        {
            var existing   = context.Users.Include("UserUserRoles.UserRole").FirstOrDefault(u => u.Id == userId);
            var permission = context.UserUserRoles.FirstOrDefault(u => u.Id == idPermission);

            if (existing == null)
            {
                return(null);
            }
            if (existing.UserUserRoles.Contains(permission))
            {
                UserUserRole currentUseRole = existing.UserUserRoles.FirstOrDefault(u => u.Id.Equals(permission.Id));
                context.UserUserRoles.Remove(currentUseRole);
            }
            else
            {
                return(null);
            }

            context.SaveChanges();
            return(this.GetPermission(userId));
        }
示例#9
0
        public object PermissionUpsert(int userId, PermissionPostModel permissionPostModel)
        {
            var errors = permissionValidator.Validate(permissionPostModel, context);

            if (errors != null)
            {
                return(errors);
            }
            var existing   = context.Users.Include("UserUserRoles.UserRole").FirstOrDefault(u => u.Id == userId);
            var permission = this.GetPermissionFromDb(permissionPostModel.UserRole);

            if (existing == null)
            {
                return(null);
            }
            if (existing.UserUserRoles.Any(u => u.
                                           UserRole.Equals(permission)))
            {
                UserUserRole currentUseRole = existing.UserUserRoles.FirstOrDefault(u => u.UserRole.Equals(permission));
                currentUseRole.EndTime   = permissionPostModel.EndTime;
                currentUseRole.StartTime = permissionPostModel.StartTime;
                context.UserUserRoles.Update(currentUseRole);
            }
            else
            {
                context.UserUserRoles.Add(new UserUserRole
                {
                    User      = existing,
                    UserRole  = permission,
                    StartTime = permissionPostModel.StartTime,
                    EndTime   = permissionPostModel.EndTime,
                });
            }

            context.SaveChanges();
            return(this.GetPermission(userId));
        }
        public ErrorsCollection Create(UserUserRolePostDTO userUserRolePostDTO)
        {
            var errors = userRoleValidator.Validate(userUserRolePostDTO, context);

            if (errors != null)
            {
                return(errors);
            }

            User user = context
                        .Users
                        .FirstOrDefault(u => u.Id == userUserRolePostDTO.UserId);

            if (user != null)
            {
                UserRole userRole = context
                                    .UserRoles
                                    .Include(urole => urole.UserUserRoles)
                                    .FirstOrDefault(urole => urole.Name == userUserRolePostDTO.UserRoleName);

                UserUserRole currentUserUserRole = context
                                                   .UserUserRoles
                                                   .Include(uurole => uurole.UserRole)
                                                   .FirstOrDefault(uurole => uurole.UserId == user.Id && uurole.EndTime == null);

                if (currentUserUserRole == null)
                {
                    context.UserUserRoles.Add(new UserUserRole
                    {
                        User      = user,
                        UserRole  = userRole,
                        StartTime = DateTime.Now,
                        EndTime   = null
                    });

                    context.SaveChanges();
                    return(null);
                }


                if (!currentUserUserRole.UserRole.Name.Contains(userUserRolePostDTO.UserRoleName))
                {
                    currentUserUserRole.EndTime = DateTime.Now;

                    context.UserUserRoles.Add(new UserUserRole
                    {
                        User      = user,
                        UserRole  = userRole,
                        StartTime = DateTime.Now,
                        EndTime   = null
                    });

                    context.SaveChanges();
                    return(null);
                }
                else
                {
                    return(null);
                }
            }
            return(null);
        }
示例#11
0
        public ErrorsCollection Create(UserUserRolePostModel userUserRolePostModel)
        {
            var errors = userRoleValidator.Validate(userUserRolePostModel, context);

            if (errors != null)
            {
                return(errors);
            }

            User user = context.Users
                        .FirstOrDefault(u => u.Id == userUserRolePostModel.UserId);

            if (user != null)
            {
                UserRole userRole = context
                                    .UserRole
                                    .Include(ur => ur.UserUserRoles)
                                    .FirstOrDefault(ur => ur.Name == userUserRolePostModel.UserRoleName);

                UserUserRole curentUserUserRole = context.UserUserRole
                                                  .Include(uur => uur.UserRole)
                                                  .FirstOrDefault(uur => uur.UserId == user.Id && uur.EndTime == null);

                //discutabil, nu ar trebui sa fie null niciodata, adica la Register nu a fost creat bine un defalut Regular role pentru userul respectiv
                if (curentUserUserRole == null)
                {
                    context.UserUserRole.Add(new UserUserRole
                    {
                        User      = user,
                        UserRole  = userRole,
                        StartTime = DateTime.Now,
                        EndTime   = null
                    });

                    context.SaveChanges();
                    return(null);
                }

                //inchiderea perioadel de activare pentru un anumit rol
                if (!curentUserUserRole.UserRole.Name.Contains(userUserRolePostModel.UserRoleName))
                {
                    curentUserUserRole.EndTime = DateTime.Now;

                    context.UserUserRole.Add(new UserUserRole
                    {
                        User      = user,
                        UserRole  = userRole,
                        StartTime = DateTime.Now,
                        EndTime   = null
                    });

                    context.SaveChanges();
                    return(null);
                }
                else
                {
                    return(null);    //trebuie sa trimit eroare ca modificarea nu poate avea loc, rol nou = rol vechi
                }
            }
            return(null);    //eroare Nu exista User cu Id-ul specificat
        }
示例#12
0
        // public User Upsert(int id, User user)
        //{
        //   var existing = context.Users.AsNoTracking().FirstOrDefault(ex => ex.Id == id);

        //  if (existing == null)
        // {
        //      context.Users.Add(user);
        //     context.SaveChanges();
        //     return user;
        // }

        // user.Id = id;
        // context.Users.Update(user);
        // context.SaveChanges();
        // return user;
        // }
        public User Upsert(int id, PostUserDto UserPostDto, User addedBy)
        {
            var existing = context.Users.AsNoTracking()
                           .Include(u => u.UserUserRoles)
                           .ThenInclude(us => us.UserRole)
                           .FirstOrDefault(u => u.Id == id);

            if (existing == null)
            {
                User toAdd = PostUserDto.ToUser(UserPostDto);
                context.Users.Add(toAdd);
                context.SaveChanges();
                return(toAdd);
            }

            String existingCurrentRole = GetLatestUserUserRole(existing.UserUserRoles).UserRole.Name;
            String addedByCurrentRole  = GetLatestUserUserRole(addedBy.UserUserRoles).UserRole.Name;

            UserUserRole currentUserUserRole = GetLatestUserUserRole(existing.UserUserRoles);

            User toUpdate = PostUserDto.ToUser(UserPostDto);

            toUpdate.Password  = existing.Password;
            toUpdate.CreatedAt = existing.CreatedAt;
            toUpdate.Id        = id;

            if (existingCurrentRole.Equals(RoleConstants.USER_MANAGER) && addedByCurrentRole.Equals(RoleConstants.USER_MANAGER) && addedBy.CreatedAt.AddMonths(6) >= DateTime.Now)
            {
                return(null);
            }
            if (((!existingCurrentRole.Equals(RoleConstants.ADMIN) ||
                  (!existingCurrentRole.Equals(RoleConstants.USER_MANAGER)) &&
                  (addedByCurrentRole.Equals(RoleConstants.USER_MANAGER) || addedByCurrentRole.Equals(RoleConstants.ADMIN)))) ||
                (existingCurrentRole.Equals(RoleConstants.USER_MANAGER) &&
                 addedByCurrentRole.Equals(RoleConstants.USER_MANAGER) &&
                 addedBy.CreatedAt.AddMonths(6) <= DateTime.Now))
            {
                toUpdate.UserUserRoles = existing.UserUserRoles;
                context.Users.Update(toUpdate);
                context.SaveChanges();
                context.Users.Attach(toUpdate);

                if (existingCurrentRole != UserPostDto.UserRole)
                {
                    IEnumerable <UserRole> allRoles = context.UserRoles;
                    List <String>          list     = new List <string>();
                    foreach (UserRole role in allRoles)
                    {
                        list.Add(role.Name);
                    }
                    if (list.Contains(UserPostDto.UserRole))
                    {
                        UserRole     role    = SearchForRoleByTitle(UserPostDto.UserRole);
                        UserUserRole history = new UserUserRole
                        {
                            UserRole  = role,
                            StartTime = DateTime.Now
                        };

                        currentUserUserRole.EndTime = DateTime.Now;

                        context.UserRoles.Attach(role);
                        toUpdate.UserUserRoles.Add(history);
                        context.SaveChanges();
                    }
                    else
                    {
                        return(null);
                    }
                }

                return(toUpdate);
            }
            return(null);
        }