59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Company.Domain.InstitutionContractSendFlagAgg;
|
|
using MongoDB.Driver;
|
|
|
|
namespace CompanyManagement.Infrastructure.Mongo.InstitutionContractSendFlagRepo;
|
|
|
|
/// <summary>
|
|
/// Repository برای مدیریت فلگ ارسال قرارداد در MongoDB
|
|
/// </summary>
|
|
public class InstitutionContractSendFlagRepository : IInstitutionContractSendFlagRepository
|
|
{
|
|
private readonly IMongoCollection<InstitutionContractSendFlag> _collection;
|
|
|
|
public InstitutionContractSendFlagRepository(IMongoDatabase database)
|
|
{
|
|
_collection = database.GetCollection<InstitutionContractSendFlag>("InstitutionContractSendFlag");
|
|
}
|
|
|
|
public async Task Create(InstitutionContractSendFlag flag)
|
|
{
|
|
await _collection.InsertOneAsync(flag);
|
|
}
|
|
|
|
public async Task<InstitutionContractSendFlag> GetByContractId(long contractId)
|
|
{
|
|
var filter = Builders<InstitutionContractSendFlag>.Filter
|
|
.Eq(x => x.InstitutionContractId, contractId);
|
|
|
|
return await _collection.Find(filter).FirstOrDefaultAsync();
|
|
}
|
|
|
|
|
|
public async Task Update(InstitutionContractSendFlag flag)
|
|
{
|
|
var filter = Builders<InstitutionContractSendFlag>.Filter
|
|
.Eq(x => x.InstitutionContractId, flag.InstitutionContractId);
|
|
|
|
await _collection.ReplaceOneAsync(filter, flag);
|
|
}
|
|
|
|
public async Task<bool> IsContractSent(long contractId)
|
|
{
|
|
var flag = await GetByContractId(contractId);
|
|
return flag != null && flag.IsSent;
|
|
}
|
|
|
|
public async Task Remove(long contractId)
|
|
{
|
|
var filter = Builders<InstitutionContractSendFlag>.Filter
|
|
.Eq(x => x.InstitutionContractId, contractId);
|
|
|
|
await _collection.DeleteOneAsync(filter);
|
|
}
|
|
|
|
}
|
|
|