DocSpace-client/common/ASC.Webhooks/DbWorker.cs

69 lines
2.3 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using ASC.Common;
using ASC.Core.Common.EF;
using ASC.Webhooks.Dao;
using ASC.Webhooks.Dao.Models;
namespace ASC.Webhooks
{
[Scope]
public class DbWorker
{
private Lazy<WebhooksDbContext> LazyWebhooksDbContext { get; }
private WebhooksDbContext webhooksDbContext { get => LazyWebhooksDbContext.Value; }
2021-08-19 12:56:14 +00:00
public DbWorker(DbContextManager<WebhooksDbContext> webhooksDbContext)
{
LazyWebhooksDbContext = new Lazy<WebhooksDbContext>(() => webhooksDbContext.Value);
}
public int WriteToJournal(WebhooksPayload webhook)
{
var entity = webhooksDbContext.WebhooksPayloads.Add(webhook);
webhooksDbContext.SaveChanges();
return entity.Entity.Id;
}
2021-08-03 16:26:28 +00:00
public WebhookEntry ReadFromJournal(int id)
{
return webhooksDbContext.WebhooksPayloads
.Where(it => it.Id == id)
.Join(webhooksDbContext.WebhooksConfigs, t => t.ConfigId, t => t.ConfigId, (payload, config) => new { payload, config })
.Select(t => new WebhookEntry { Id = t.payload.Id, Data = t.payload.Data, SecretKey = t.config.SecretKey, Uri = t.config.Uri })
.OrderBy(t => t.Id).FirstOrDefault();
}
public void AddWebhookConfig(WebhooksConfig webhooksConfig)
{
webhooksDbContext.WebhooksConfigs.Add(webhooksConfig);
webhooksDbContext.SaveChanges();
}
public List<string> GetWebhookUri(int tenant)
{
return webhooksDbContext.WebhooksConfigs.Where(t => t.TenantId == tenant).Select(it => it.Uri).ToList();
}
public List<WebhooksConfig> GetWebhookConfigs(int tenant)
{
return webhooksDbContext.WebhooksConfigs.Where(t => t.TenantId == tenant).ToList();
}
public void UpdateStatus(int id, ProcessStatus status)
{
var webhook = webhooksDbContext.WebhooksPayloads.Where(t => t.Id == id).FirstOrDefault();
webhook.Status = status;
webhooksDbContext.WebhooksPayloads.Update(webhook);
webhooksDbContext.SaveChanges();
}
2021-08-19 09:11:26 +00:00
public int ConfigsNumber()
{
return webhooksDbContext.WebhooksConfigs.Count();
}
}
}