DiscordNotificationController.cs got a new route, moved over to ActionResults, records are now tracking the userId and returning common result classes
This commit is contained in:
parent
7344d2bdd2
commit
a416746269
@ -1,130 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Newsbot.Collector.Domain.Dto;
|
|
||||||
using Newsbot.Collector.Domain.Entities;
|
|
||||||
using Newsbot.Collector.Domain.Interfaces;
|
|
||||||
|
|
||||||
namespace Newsbot.Collector.Api.Controllers;
|
|
||||||
|
|
||||||
[ApiController]
|
|
||||||
[Route("api/subscriptions")]
|
|
||||||
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
|
|
||||||
public class DiscordNotificationController : ControllerBase
|
|
||||||
{
|
|
||||||
private readonly ILogger<DiscordNotificationController> _logger;
|
|
||||||
private readonly IDiscordWebHooksRepository _discord;
|
|
||||||
private readonly ISourcesRepository _sources;
|
|
||||||
private readonly IDiscordNotificationRepository _discordNotification;
|
|
||||||
|
|
||||||
public DiscordNotificationController(ILogger<DiscordNotificationController> logger, IDiscordWebHooksRepository discord, ISourcesRepository sources, IDiscordNotificationRepository discordNotification)
|
|
||||||
{
|
|
||||||
_logger = logger;
|
|
||||||
_discord = discord;
|
|
||||||
_sources = sources;
|
|
||||||
_discordNotification = discordNotification;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet(Name = "ListSubscriptions")]
|
|
||||||
public IEnumerable<DiscordNotificationDto> List(int page)
|
|
||||||
{
|
|
||||||
var res = new List<DiscordNotificationDto>();
|
|
||||||
var items = _discordNotification.List(page);
|
|
||||||
foreach (var item in items) res.Add(DiscordNotificationDto.Convert(item));
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{id}")]
|
|
||||||
public DiscordNotificationDto GetById(Guid id)
|
|
||||||
{
|
|
||||||
return DiscordNotificationDto.Convert(_discordNotification.GetById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{id}/details")]
|
|
||||||
public DiscordNotificationDetailsDto GetDetailsById(Guid id)
|
|
||||||
{
|
|
||||||
var sub = _discordNotification.GetById(id);
|
|
||||||
var webhook = _discord.GetById(sub.DiscordWebHookId);
|
|
||||||
var source = _sources.GetById(sub.SourceId);
|
|
||||||
|
|
||||||
return DiscordNotificationDetailsDto.Convert(sub, source, webhook);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("{id}/delete")]
|
|
||||||
public void DeleteById(Guid id)
|
|
||||||
{
|
|
||||||
_discordNotification.Delete(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("by/discordId/{id}")]
|
|
||||||
public IEnumerable<DiscordNotificationDto> GetByDiscordId(Guid id)
|
|
||||||
{
|
|
||||||
var res = new List<DiscordNotificationDto>();
|
|
||||||
var items = _discordNotification.ListByWebhook(id);
|
|
||||||
foreach (var item in items) res.Add(DiscordNotificationDto.Convert(item));
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("by/sourceId/{id}")]
|
|
||||||
public IEnumerable<DiscordNotificationDto> GetBySourceId(Guid id)
|
|
||||||
{
|
|
||||||
var res = new List<DiscordNotificationDto>();
|
|
||||||
var items = _discordNotification.ListBySourceId(id);
|
|
||||||
foreach (var item in items) res.Add(DiscordNotificationDto.Convert(item));
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost(Name = "New Subscription")]
|
|
||||||
public ActionResult<DiscordNotificationDto> New(Guid sourceId, Guid discordId)
|
|
||||||
{
|
|
||||||
if (sourceId == Guid.Empty) return new BadRequestResult();
|
|
||||||
if (discordId == Guid.Empty) return new BadRequestResult();
|
|
||||||
|
|
||||||
var exists = _discordNotification.GetByWebhookAndSource(discordId, sourceId);
|
|
||||||
if (exists.Id != Guid.Empty) return DiscordNotificationDto.Convert(exists);
|
|
||||||
|
|
||||||
var discord = _discord.GetById(discordId);
|
|
||||||
if (discord.Id == Guid.Empty) return new BadRequestResult();
|
|
||||||
|
|
||||||
var source = _sources.GetById(sourceId);
|
|
||||||
if (source.Id == Guid.Empty) return new BadRequestResult();
|
|
||||||
|
|
||||||
var item = _discordNotification.New(new DiscordNotificationEntity
|
|
||||||
{
|
|
||||||
Id = Guid.NewGuid(),
|
|
||||||
SourceId = sourceId,
|
|
||||||
DiscordWebHookId = discordId,
|
|
||||||
CodeAllowCommits = false,
|
|
||||||
CodeAllowReleases = false
|
|
||||||
});
|
|
||||||
|
|
||||||
return DiscordNotificationDto.Convert(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("new/codeproject")]
|
|
||||||
public ActionResult<DiscordNotificationDto> NewCodeProjectSubscription(Guid sourceId, Guid discordId, bool allowReleases,
|
|
||||||
bool allowCommits)
|
|
||||||
{
|
|
||||||
if (sourceId == Guid.Empty) return new BadRequestResult();
|
|
||||||
if (discordId == Guid.Empty) return new BadRequestResult();
|
|
||||||
|
|
||||||
var exists = _discordNotification.GetByWebhookAndSource(discordId, sourceId);
|
|
||||||
if (exists.Id != Guid.Empty) return DiscordNotificationDto.Convert(exists);
|
|
||||||
|
|
||||||
var discord = _discord.GetById(discordId);
|
|
||||||
if (discord.Id == Guid.Empty) return new BadRequestResult();
|
|
||||||
|
|
||||||
var source = _sources.GetById(sourceId);
|
|
||||||
if (source.Id == Guid.Empty) return new BadRequestResult();
|
|
||||||
|
|
||||||
var sub = _discordNotification.New(new DiscordNotificationEntity
|
|
||||||
{
|
|
||||||
DiscordWebHookId = discordId,
|
|
||||||
SourceId = sourceId,
|
|
||||||
CodeAllowCommits = allowCommits,
|
|
||||||
CodeAllowReleases = allowReleases
|
|
||||||
});
|
|
||||||
|
|
||||||
return new DiscordNotificationDto();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,239 @@
|
|||||||
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Newsbot.Collector.Api.Middleware;
|
||||||
|
using Newsbot.Collector.Domain.Dto;
|
||||||
|
using Newsbot.Collector.Domain.Entities;
|
||||||
|
using Newsbot.Collector.Domain.Interfaces;
|
||||||
|
using Newsbot.Collector.Domain.Requests;
|
||||||
|
using Newsbot.Collector.Domain.Results;
|
||||||
|
|
||||||
|
namespace Newsbot.Collector.Api.Controllers.v1;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/v1/subscriptions")]
|
||||||
|
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
|
||||||
|
public class DiscordNotificationController : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly ILogger<DiscordNotificationController> _logger;
|
||||||
|
private readonly IDiscordWebHooksRepository _discord;
|
||||||
|
private readonly ISourcesRepository _sources;
|
||||||
|
private readonly IDiscordNotificationRepository _discordNotification;
|
||||||
|
|
||||||
|
public DiscordNotificationController(ILogger<DiscordNotificationController> logger, IDiscordWebHooksRepository discord, ISourcesRepository sources, IDiscordNotificationRepository discordNotification)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_discord = discord;
|
||||||
|
_sources = sources;
|
||||||
|
_discordNotification = discordNotification;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet(Name = "ListSubscriptions")]
|
||||||
|
public ActionResult<DiscordNotificationResult> List(int page)
|
||||||
|
{
|
||||||
|
var userId = HttpContext.GetUserId();
|
||||||
|
if (userId.Equals(string.Empty))
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "User Id is missing from the request." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var res = new List<DiscordNotificationDto>();
|
||||||
|
var items = _discordNotification.List(userId, page);
|
||||||
|
foreach (var item in items) res.Add(DiscordNotificationDto.Convert(item));
|
||||||
|
|
||||||
|
return new OkObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = true,
|
||||||
|
Items = res
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("{id}")]
|
||||||
|
public ActionResult<DiscordNotificationResult> GetById(Guid id)
|
||||||
|
{
|
||||||
|
var userId = HttpContext.GetUserId();
|
||||||
|
if (userId.Equals(string.Empty))
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "User Id is missing from the request." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var res = DiscordNotificationDto.Convert(_discordNotification.GetById(userId, id));
|
||||||
|
|
||||||
|
return new OkObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = true,
|
||||||
|
Items = new List<DiscordNotificationDto>
|
||||||
|
{
|
||||||
|
res
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("{id}/details")]
|
||||||
|
public ActionResult<DiscordNotificationDetailsResult> GetDetailsById(Guid id)
|
||||||
|
{
|
||||||
|
var userId = HttpContext.GetUserId();
|
||||||
|
if (userId.Equals(string.Empty))
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "User Id is missing from the request." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var sub = _discordNotification.GetById(userId, id);
|
||||||
|
var webhook = _discord.GetById(sub.DiscordWebHookId);
|
||||||
|
var source = _sources.GetById(sub.SourceId);
|
||||||
|
|
||||||
|
return new OkObjectResult(new DiscordNotificationDetailsResult
|
||||||
|
{
|
||||||
|
IsSuccessful = true,
|
||||||
|
Item = DiscordNotificationDetailsDto.Convert(sub, source, webhook)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("{id}/delete")]
|
||||||
|
public ActionResult<DiscordNotificationResult> DeleteById(Guid id)
|
||||||
|
{
|
||||||
|
var userId = HttpContext.GetUserId();
|
||||||
|
if (userId.Equals(string.Empty))
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "User Id is missing from the request." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var rowsUpdated = _discordNotification.Delete(userId, id);
|
||||||
|
if (rowsUpdated == -1)
|
||||||
|
{
|
||||||
|
return new OkObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "Record was not own by requested user." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return new OkObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("by/discordId/{id}")]
|
||||||
|
public ActionResult<DiscordNotificationResult> GetByDiscordId(Guid id)
|
||||||
|
{
|
||||||
|
var userId = HttpContext.GetUserId();
|
||||||
|
if (userId.Equals(string.Empty))
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "User Id is missing from the request." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var res = new List<DiscordNotificationDto>();
|
||||||
|
var items = _discordNotification.ListByWebhook(userId, id);
|
||||||
|
foreach (var item in items) res.Add(DiscordNotificationDto.Convert(item));
|
||||||
|
|
||||||
|
return new OkObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = true,
|
||||||
|
Items = res
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("by/sourceId/{id}")]
|
||||||
|
public ActionResult<DiscordNotificationResult> GetBySourceId(Guid id)
|
||||||
|
{
|
||||||
|
var userId = HttpContext.GetUserId();
|
||||||
|
if (userId.Equals(string.Empty))
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "User Id is missing from the request." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var res = new List<DiscordNotificationDto>();
|
||||||
|
var items = _discordNotification.ListBySourceId(userId, id);
|
||||||
|
foreach (var item in items) res.Add(DiscordNotificationDto.Convert(item));
|
||||||
|
|
||||||
|
return new OkObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = true,
|
||||||
|
Items = res
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost(Name = "New Subscription")]
|
||||||
|
public ActionResult<DiscordNotificationDto> New([FromBody] NewDiscordNotificationRequest request)
|
||||||
|
{
|
||||||
|
var userId = HttpContext.GetUserId();
|
||||||
|
if (userId.Equals(string.Empty))
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "User Id is missing from the request." }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.SourceId == Guid.Empty) return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "SourceId is missing from the request." }
|
||||||
|
});
|
||||||
|
if (request.DiscordId == Guid.Empty) return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "DiscordId is missing from the request." }
|
||||||
|
});
|
||||||
|
|
||||||
|
var exists = _discordNotification.GetByWebhookAndSource(userId, request.DiscordId, request.SourceId);
|
||||||
|
if (exists.Id != Guid.Empty) return DiscordNotificationDto.Convert(exists);
|
||||||
|
|
||||||
|
var discord = _discord.GetById(request.DiscordId);
|
||||||
|
if (discord.Id == Guid.Empty) return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "Unable to find the requested DiscordId in the database." }
|
||||||
|
});
|
||||||
|
|
||||||
|
var source = _sources.GetById(request.SourceId);
|
||||||
|
if (source.Id == Guid.Empty) return new BadRequestObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = false,
|
||||||
|
ErrorMessage = new List<string> { "Unable to find the requested SourceId in the database." }
|
||||||
|
});
|
||||||
|
|
||||||
|
var item = _discordNotification.New(new DiscordNotificationEntity
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid(),
|
||||||
|
SourceId = request.SourceId,
|
||||||
|
DiscordWebHookId = request.DiscordId,
|
||||||
|
CodeAllowCommits = request.AllowCommits,
|
||||||
|
CodeAllowReleases = request.AllowReleases,
|
||||||
|
UserId = userId
|
||||||
|
});
|
||||||
|
|
||||||
|
return new OkObjectResult(new DiscordNotificationResult
|
||||||
|
{
|
||||||
|
IsSuccessful = true,
|
||||||
|
Items = new List<DiscordNotificationDto> { DiscordNotificationDto.Convert(item) }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,5 @@
|
|||||||
using System.Data;
|
|
||||||
using Dapper;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Newsbot.Collector.Domain.Entities;
|
using Newsbot.Collector.Domain.Entities;
|
||||||
using Newsbot.Collector.Domain.Interfaces;
|
using Newsbot.Collector.Domain.Interfaces;
|
||||||
using Newsbot.Collector.Domain.Models;
|
|
||||||
using Npgsql;
|
|
||||||
|
|
||||||
namespace Newsbot.Collector.Database.Repositories;
|
namespace Newsbot.Collector.Database.Repositories;
|
||||||
|
|
||||||
@ -27,66 +22,76 @@ public class DiscordNotificationTable : IDiscordNotificationRepository
|
|||||||
public DiscordNotificationEntity New(DiscordNotificationEntity model)
|
public DiscordNotificationEntity New(DiscordNotificationEntity model)
|
||||||
{
|
{
|
||||||
model.Id = new Guid();
|
model.Id = new Guid();
|
||||||
//using var context = new DatabaseContext(_connectionString);
|
|
||||||
_context.DiscordNotification.Add(model);
|
_context.DiscordNotification.Add(model);
|
||||||
_context.SaveChanges();
|
_context.SaveChanges();
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DiscordNotificationEntity> List(int page = 0, int count = 25)
|
public List<DiscordNotificationEntity> List(string userId, int page = 0, int count = 25)
|
||||||
{
|
{
|
||||||
//using var context = new DatabaseContext(_connectionString);
|
return _context.DiscordNotification
|
||||||
return _context.DiscordNotification.Skip(page * count).Take(count).ToList();
|
.Where(x => x.UserId != null && x.UserId.Equals(userId))
|
||||||
|
.Skip(page * count)
|
||||||
|
.Take(count)
|
||||||
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<DiscordNotificationEntity> ListBySourceId(string userId, Guid id, int page = 0, int count = 25)
|
||||||
|
{
|
||||||
|
return _context.DiscordNotification
|
||||||
|
.Where(f => f.SourceId.Equals(id))
|
||||||
|
.Where(f => f.UserId != null && f.UserId.Equals(userId))
|
||||||
|
.Skip(page * count)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
public List<DiscordNotificationEntity> ListBySourceId(Guid id, int page = 0, int count = 25)
|
public List<DiscordNotificationEntity> ListBySourceId(Guid id, int page = 0, int count = 25)
|
||||||
{
|
{
|
||||||
//using var context = new DatabaseContext(_connectionString);
|
return _context.DiscordNotification
|
||||||
return _context.DiscordNotification.Where(f => f.SourceId.Equals(id))
|
.Where(f => f.SourceId.Equals(id))
|
||||||
.Skip(page * count)
|
.Skip(page * count)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DiscordNotificationEntity> ListByWebhook(Guid id, int page = 0, int count = 25)
|
public List<DiscordNotificationEntity> ListByWebhook(string userId, Guid id, int page = 0, int count = 25)
|
||||||
{
|
{
|
||||||
//using var context = new DatabaseContext(_connectionString);
|
return _context.DiscordNotification
|
||||||
return _context.DiscordNotification.Where(f => f.DiscordWebHookId.Equals(id)).Skip(page * count).ToList();
|
.Where(f => f.DiscordWebHookId.Equals(id))
|
||||||
|
.Where(f => f.UserId != null && f.UserId.Equals(userId))
|
||||||
|
.Skip(page * count)
|
||||||
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DiscordNotificationEntity GetById(Guid id)
|
public DiscordNotificationEntity GetById(string userId, Guid id)
|
||||||
{
|
{
|
||||||
//using var context = new DatabaseContext(_connectionString);
|
|
||||||
var res = _context.DiscordNotification
|
var res = _context.DiscordNotification
|
||||||
|
.Where(f => f.UserId != null && f.UserId.Equals(userId))
|
||||||
.FirstOrDefault(f => f.Id.Equals(id));
|
.FirstOrDefault(f => f.Id.Equals(id));
|
||||||
return res ??= new DiscordNotificationEntity();
|
return res ??= new DiscordNotificationEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DiscordNotificationEntity GetByWebhookAndSource(Guid webhookId, Guid sourceId)
|
public DiscordNotificationEntity GetByWebhookAndSource(string userId, Guid webhookId, Guid sourceId)
|
||||||
{
|
{
|
||||||
//using var context = new DatabaseContext(_connectionString);
|
|
||||||
var res = _context.DiscordNotification
|
var res = _context.DiscordNotification
|
||||||
|
.Where(f => f.UserId != null && f.UserId.Equals(userId))
|
||||||
.Where(f => f.DiscordWebHookId.Equals(webhookId))
|
.Where(f => f.DiscordWebHookId.Equals(webhookId))
|
||||||
.FirstOrDefault(f => f.SourceId.Equals(sourceId));
|
.FirstOrDefault(f => f.SourceId.Equals(sourceId));
|
||||||
return res ??= new DiscordNotificationEntity();
|
return res ??= new DiscordNotificationEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Delete(Guid id)
|
public int Delete(string userId, Guid id)
|
||||||
{
|
{
|
||||||
//using var context = new DatabaseContext(_connectionString);
|
var res = _context.DiscordNotification
|
||||||
var res = _context.DiscordNotification.FirstOrDefault(f => f.Id.Equals(id));
|
.Where(f => f.UserId != null && f.UserId.Equals(userId))
|
||||||
|
.FirstOrDefault(f => f.Id.Equals(id));
|
||||||
if (res is null)
|
if (res is null)
|
||||||
{
|
{
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_context.DiscordNotification.Remove(res);
|
_context.DiscordNotification.Remove(res);
|
||||||
_context.SaveChanges();
|
return _context.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
//private IDbConnection OpenConnection(string connectionString)
|
|
||||||
//{
|
|
||||||
// var conn = new NpgsqlConnection(_connectionString);
|
|
||||||
// conn.Open();
|
|
||||||
// return conn;
|
|
||||||
//}
|
|
||||||
}
|
}
|
@ -1,3 +1,6 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Microsoft.AspNetCore.Identity;
|
||||||
|
|
||||||
namespace Newsbot.Collector.Domain.Entities;
|
namespace Newsbot.Collector.Domain.Entities;
|
||||||
|
|
||||||
public class DiscordWebhookEntity
|
public class DiscordWebhookEntity
|
||||||
@ -7,4 +10,8 @@ public class DiscordWebhookEntity
|
|||||||
public string Server { get; set; } = "";
|
public string Server { get; set; } = "";
|
||||||
public string Channel { get; set; } = "";
|
public string Channel { get; set; } = "";
|
||||||
public bool Enabled { get; set; }
|
public bool Enabled { get; set; }
|
||||||
|
|
||||||
|
public string? UserId { get; set; }
|
||||||
|
[ForeignKey(nameof(UserId))]
|
||||||
|
public IdentityUser? User { get; set; }
|
||||||
}
|
}
|
@ -7,12 +7,22 @@ public interface IDiscordNotificationRepository
|
|||||||
{
|
{
|
||||||
DiscordNotificationEntity New(DiscordNotificationEntity model);
|
DiscordNotificationEntity New(DiscordNotificationEntity model);
|
||||||
|
|
||||||
List<DiscordNotificationEntity> List(int page = 0, int count = 25);
|
List<DiscordNotificationEntity> List(string userId, int page = 0, int count = 25);
|
||||||
|
List<DiscordNotificationEntity> ListBySourceId(string userId, Guid id, int page = 0, int count = 25);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This will collect all the records based on the SourceId.
|
||||||
|
/// Background jobs can use this but user facing calls need to define UserId
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <param name="page"></param>
|
||||||
|
/// <param name="count"></param>
|
||||||
|
/// <returns></returns>
|
||||||
List<DiscordNotificationEntity> ListBySourceId(Guid id, int page = 0, int count = 25);
|
List<DiscordNotificationEntity> ListBySourceId(Guid id, int page = 0, int count = 25);
|
||||||
List<DiscordNotificationEntity> ListByWebhook(Guid id, int page = 0, int count = 25);
|
List<DiscordNotificationEntity> ListByWebhook(string userId, Guid id, int page = 0, int count = 25);
|
||||||
|
|
||||||
DiscordNotificationEntity GetById(Guid id);
|
DiscordNotificationEntity GetById(string userId, Guid id);
|
||||||
DiscordNotificationEntity GetByWebhookAndSource(Guid webhookId, Guid sourceId);
|
DiscordNotificationEntity GetByWebhookAndSource(string userId, Guid webhookId, Guid sourceId);
|
||||||
|
|
||||||
void Delete(Guid id);
|
int Delete(string userId, Guid id);
|
||||||
}
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
namespace Newsbot.Collector.Domain.Requests;
|
||||||
|
|
||||||
|
public class NewDiscordNotificationRequest
|
||||||
|
{
|
||||||
|
public Guid SourceId { get; set; }
|
||||||
|
public Guid DiscordId { get; set; }
|
||||||
|
|
||||||
|
public bool AllowReleases { get; set; } = false;
|
||||||
|
public bool AllowCommits { get; set; } = false;
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
using Newsbot.Collector.Domain.Dto;
|
||||||
|
|
||||||
|
namespace Newsbot.Collector.Domain.Results;
|
||||||
|
|
||||||
|
public class DiscordNotificationDetailsResult : BaseResult
|
||||||
|
{
|
||||||
|
public DiscordNotificationDetailsDto? Item { get; set; }
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
using Newsbot.Collector.Domain.Dto;
|
||||||
|
|
||||||
|
namespace Newsbot.Collector.Domain.Results;
|
||||||
|
|
||||||
|
public class DiscordNotificationResult : BaseResult
|
||||||
|
{
|
||||||
|
public IEnumerable<DiscordNotificationDto>? Items { get; set; }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user