public Result ChangeRole(long groupUserId, string roleId, string userId) { _logger.LogInformation($"Changing GroupUser role. GroupUserId {groupUserId}, roleId {roleId}"); Result roleValidResult = RoleIsValid(roleId); if (roleValidResult.Failure) { return(Result.Fail(roleValidResult.Errors)); } List <RoleListData> canAssigneGroupRoles = _groupUserStore.CanAssigneGroupRoles(); if (!canAssigneGroupRoles.Any(x => x.Id == roleId)) { _logger.LogError($"User does not have permission to assign role. RoleId {roleId}"); return(Result.Fail("no_permission", "No Permission")); } Result <GroupUserEntity> getGroupUserResult = _groupUserStore.Get(groupUserId); if (getGroupUserResult.Failure) { return(Result.Fail(getGroupUserResult.Errors)); } GroupUserEntity groupUser = getGroupUserResult.Value; List <RoleListData> canManageGroupRoles = _groupUserStore.CanManageGroupRoles(); if (!canManageGroupRoles.Any(x => x.Id != groupUser.RoleId)) { _logger.LogError($"User does not have permission to manage role. GroupUserId {groupUserId} RoleId {roleId}"); return(Result.Fail("no_permission", "No Permission")); } if (!_groupUserStore.CanChangeOwnRole()) { if (groupUser.UserId == userId) { _logger.LogError($"User can not change his own role"); return(Result.Fail("user_can_not_change_his_own_role", "User can not change his own role")); } } groupUser.UpdateRole(roleId); bool updateResult = _groupUserRepository.Update(groupUser); if (!updateResult) { _logger.LogError($"Failed to change group user role. GroupUserId {groupUserId}, roleId {roleId}"); return(Result.Fail("failed_to_cahnge_group_user_role", "Failed to change GroupUser role")); } return(Result.Ok()); }
public async Task <Result <List <TimeRangeStatisticsModel> > > GetRegistrationStatistics(string groupId, TimeRangeRequest timeRangeRequest) { ValidationResult validationResult = _timeRangeRequestValidator.Validate(timeRangeRequest); if (!validationResult.IsValid) { _logger.LogError($"Invalid {typeof(TimeRangeRequest).Name} model"); return(Result.Fail <List <TimeRangeStatisticsModel> >(validationResult.ToResultError())); } IBaseSpecification <GroupUserEntity, DateTimeOffset> specification = SpecificationBuilder .Create <GroupUserEntity>() .Where(x => x.User._CreatedDate != null) .Where(x => x.User._CreatedDate >= timeRangeRequest.From) .Where(x => x.User._CreatedDate < timeRangeRequest.To) .Where(x => x.GroupId == groupId) .Select(x => x.User._CreatedDate.Value) .Build(); List <DateTimeOffset> dateTimes = await _groupUserStore.Get(specification); List <TimeRangeStatisticsModel> viewModel = dateTimes .GroupBy(x => new { x.UtcDateTime.Year, x.UtcDateTime.Month, x.UtcDateTime.Day }) .Select(x => new TimeRangeStatisticsModel( dateTime: new DateTime(x.Key.Year, x.Key.Month, x.Key.Day, 0, 0, 0, DateTimeKind.Utc), value: x.Count())) .ToList(); DateTime dateTime = new DateTime( timeRangeRequest.From.UtcDateTime.Year, timeRangeRequest.From.UtcDateTime.Month, timeRangeRequest.From.UtcDateTime.Day, 0, 0, 0, DateTimeKind.Utc); for (; dateTime < timeRangeRequest.To; dateTime = dateTime.AddDays(1)) { bool exists = viewModel .Where(x => x.DateTime == dateTime) .Any(); if (!exists) { viewModel.Add(new TimeRangeStatisticsModel( dateTime: dateTime, value: 0)); } } viewModel = viewModel .OrderBy(x => x.DateTime) .ToList(); return(Result.Ok(viewModel)); }
private async Task <Result> ChangeRoleAsync(long groupUserId, string roleId, string userId) { _logger.LogInformation($"Changing GroupUser role. GroupUserId {groupUserId}, roleId {roleId}"); Result roleValidResult = await RoleIsValid(roleId); if (roleValidResult.Failure) { return(Result.Fail(roleValidResult)); } List <RoleListData> canAssigneGroupRoles = _groupUserStore.CanAssigneGroupRoles(); if (!canAssigneGroupRoles.Any(x => x.Id == roleId)) { _logger.LogError($"User does not have permission to assign role. RoleId {roleId}"); return(Result.Fail(NO_PERMISSION)); } Core.Models.Result.Result <GroupUserEntity> getGroupUserResult = _groupUserStore.Get(groupUserId); if (getGroupUserResult.Failure) { return(getGroupUserResult.ToNewResult()); } GroupUserEntity groupUser = getGroupUserResult.Value; List <RoleListData> canManageGroupRoles = _groupUserStore.CanManageGroupRoles(); if (!canManageGroupRoles.Any(x => x.Id != groupUser.RoleId)) { _logger.LogError($"User does not have permission to manage role. GroupUserId {groupUserId} RoleId {roleId}"); return(Result.Fail(NO_PERMISSION)); } if (!_groupUserStore.CanChangeOwnRole()) { if (groupUser.UserId == userId) { _logger.LogError($"User can not change his own role"); return(Result.Fail(USER_CAN_NOT_CHANGE_HIS_OWN_ROLE)); } } groupUser.UpdateRole(roleId); bool updateResult = await _groupUserDAO.Update(groupUser); if (!updateResult) { _logger.LogError($"Failed to change group user role. GroupUserId {groupUserId}, roleId {roleId}"); return(Result.Fail(FAILED_TO_CAHNGE_GROUP_USER_ROLE)); } return(Result.Ok()); }