public async Task <IActionResult> Create(BanFileMonitorDto model)
        {
            var gameServerDto = await _gameServersRepository.GetGameServer(model.ServerId);

            if (gameServerDto == null)
            {
                return(NotFound());
            }

            if (!ModelState.IsValid)
            {
                await AddGameServersViewData(model.ServerId);

                return(View(model));
            }

            var banFileMonitorDto       = new BanFileMonitorDto().WithServerDto(gameServerDto);
            var canCreateBanFileMonitor = await _authorizationService.AuthorizeAsync(User, banFileMonitorDto, AuthPolicies.CreateBanFileMonitor);

            if (!canCreateBanFileMonitor.Succeeded)
            {
                return(Unauthorized());
            }

            banFileMonitorDto.FilePath = model.FilePath;

            await _banFileMonitorsRepository.CreateBanFileMonitor(banFileMonitorDto);

            _logger.LogInformation(EventIds.Management, "User {User} has created a new ban file monitor with Id {Id}", User.Username(), banFileMonitorDto.BanFileMonitorId);
            this.AddAlertSuccess($"The ban file monitor has been created for {gameServerDto.Title}");

            return(RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> Edit(BanFileMonitorDto model)
        {
            var banFileMonitorDto = await _banFileMonitorsRepository.GetBanFileMonitor(model.BanFileMonitorId);

            if (banFileMonitorDto == null)
            {
                return(NotFound());
            }

            if (!ModelState.IsValid)
            {
                await AddGameServersViewData(model.ServerId);

                return(View(banFileMonitorDto));
            }

            var canEditBanFileMonitor = await _authorizationService.AuthorizeAsync(User, banFileMonitorDto, AuthPolicies.EditBanFileMonitor);

            if (!canEditBanFileMonitor.Succeeded)
            {
                return(Unauthorized());
            }

            banFileMonitorDto.FilePath = model.FilePath;

            await _banFileMonitorsRepository.UpdateBanFileMonitor(banFileMonitorDto);

            _logger.LogInformation(EventIds.Management, "User {User} has updated {BanFileMonitorId} against {ServerId}", User.Username(), banFileMonitorDto.BanFileMonitorId, banFileMonitorDto.ServerId);
            this.AddAlertSuccess($"The ban file monitor has been created for {banFileMonitorDto.GameServer.Title}");

            return(RedirectToAction(nameof(Index)));
        }
        public static BanFileMonitorDto WithServerDto(this BanFileMonitorDto banFileMonitorDto, GameServerDto gameServerDto)
        {
            banFileMonitorDto.GameServer = gameServerDto;
            banFileMonitorDto.ServerId   = gameServerDto.ServerId;

            return(banFileMonitorDto);
        }
Пример #4
0
        public async Task CreateBanFileMonitor(BanFileMonitorDto banFileMonitorDto)
        {
            if (banFileMonitorDto == null)
            {
                throw new ArgumentNullException(nameof(banFileMonitorDto));
            }

            var server = await _legacyContext.GameServers.SingleOrDefaultAsync(s => s.ServerId == banFileMonitorDto.ServerId);

            if (server == null)
            {
                throw new NullReferenceException(nameof(server));
            }

            var banFileMonitor = new BanFileMonitors
            {
                BanFileMonitorId = Guid.NewGuid(),
                FilePath         = banFileMonitorDto.FilePath,
                //RemoteFileSize = banFileMonitorDto.RemoteFileSize,
                LastSync = DateTime.UtcNow.AddHours(-4),
                //LastError = string.Empty,
                GameServerServer = server
            };

            _legacyContext.BanFileMonitors.Add(banFileMonitor);
            await _legacyContext.SaveChangesAsync();
        }
        public static BanFileMonitorDto ToDto(this BanFileMonitors banFileMonitor)
        {
            var banFileMonitorDto = new BanFileMonitorDto
            {
                BanFileMonitorId = banFileMonitor.BanFileMonitorId,
                FilePath         = banFileMonitor.FilePath,
                RemoteFileSize   = banFileMonitor.RemoteFileSize,
                LastSync         = banFileMonitor.LastSync,
                ServerId         = banFileMonitor.GameServerServer.ServerId,
                GameServer       = banFileMonitor.GameServerServer.ToDto()
            };

            return(banFileMonitorDto);
        }
Пример #6
0
        public async Task UpdateBanFileMonitor(BanFileMonitorDto banFileMonitorDto)
        {
            if (banFileMonitorDto == null)
            {
                throw new ArgumentNullException(nameof(banFileMonitorDto));
            }

            var banFileMonitor = await _legacyContext.BanFileMonitors.SingleOrDefaultAsync(bfm => bfm.BanFileMonitorId == banFileMonitorDto.BanFileMonitorId);

            if (banFileMonitor == null)
            {
                throw new NullReferenceException(nameof(banFileMonitor));
            }

            banFileMonitor.FilePath       = banFileMonitorDto.FilePath;
            banFileMonitor.RemoteFileSize = banFileMonitorDto.RemoteFileSize;
            banFileMonitor.LastSync       = banFileMonitorDto.LastSync;

            await _legacyContext.SaveChangesAsync();
        }