Правки по результатам PR - 2
This commit is contained in:
parent
fd8bfac6a6
commit
baba1a05c0
@ -34,8 +34,8 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
||||
CancellationToken token)
|
||||
{
|
||||
var userId = User.GetUserId<Guid>();
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
|
||||
var result = await service.AddRange(idDiscriminator, changeLogCommit, token);
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
|
||||
var result = await service.AddRange(idDiscriminator, changeLogCommit, dtos, token);
|
||||
|
||||
return CreatedAtAction(nameof(AddRange), result);
|
||||
}
|
||||
@ -45,7 +45,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
||||
public async Task<IActionResult> DeleteRange(IEnumerable<Guid> ids, string comment, CancellationToken token)
|
||||
{
|
||||
var userId = User.GetUserId<Guid>();
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment, Enumerable.Empty<ChangeLogValuesDto>());
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
|
||||
var result = await service.MarkAsDeleted(ids, changeLogCommit, token);
|
||||
|
||||
return Ok(result);
|
||||
@ -60,8 +60,8 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
||||
CancellationToken token)
|
||||
{
|
||||
var userId = User.GetUserId<Guid>();
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
|
||||
var result = await service.ClearAndAddRange(idDiscriminator, changeLogCommit, token);
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
|
||||
var result = await service.ClearAndAddRange(idDiscriminator, changeLogCommit, dtos, token);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
@ -73,8 +73,8 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
||||
CancellationToken token)
|
||||
{
|
||||
var userId = User.GetUserId<Guid>();
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
|
||||
var result = await service.UpdateRange(changeLogCommit, token);
|
||||
var changeLogCommit = new ChangeLogCommitDto(userId, comment);
|
||||
var result = await service.UpdateRange(changeLogCommit, dtos, token);
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
|
@ -58,14 +58,15 @@ public class ChangeLogService
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator"></param>
|
||||
/// <param name="commitDto"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
|
||||
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
|
||||
{
|
||||
var commitId = await GetOrCreateCommitAsync(commitDto, token);
|
||||
commitDto.Id = commitId;
|
||||
|
||||
var result = await repository.AddRange(idDiscriminator, commitDto, token);
|
||||
var result = await repository.AddRange(idDiscriminator, commitDto, dtos, token);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -91,14 +92,15 @@ public class ChangeLogService
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator"></param>
|
||||
/// <param name="commitDto"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
|
||||
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
|
||||
{
|
||||
var commitId = await GetOrCreateCommitAsync(commitDto, token);
|
||||
commitDto.Id = commitId;
|
||||
|
||||
var result = await repository.ClearAndAddRange(idDiscriminator, commitDto, token);
|
||||
var result = await repository.ClearAndAddRange(idDiscriminator, commitDto, dtos, token);
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -107,14 +109,15 @@ public class ChangeLogService
|
||||
/// Обновить записи в журнале изменений
|
||||
/// </summary>
|
||||
/// <param name="changeLogCommit"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<int> UpdateRange(ChangeLogCommitDto changeLogCommit, CancellationToken token)
|
||||
public async Task<int> UpdateRange(ChangeLogCommitDto changeLogCommit, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
|
||||
{
|
||||
var commitId = await GetOrCreateCommitAsync(changeLogCommit, token);
|
||||
changeLogCommit.Id = commitId;
|
||||
|
||||
var result = await repository.UpdateRange(changeLogCommit, token);
|
||||
var result = await repository.UpdateRange(changeLogCommit, dtos, token);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -19,10 +19,10 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
|
||||
public async Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
|
||||
{
|
||||
var entities = new List<ChangeLog>();
|
||||
foreach (var values in commitDto.ChangeLogItems)
|
||||
foreach (var values in dtos)
|
||||
{
|
||||
var entity = new ChangeLog()
|
||||
{
|
||||
@ -83,35 +83,35 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
}
|
||||
|
||||
|
||||
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
|
||||
public async Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
|
||||
{
|
||||
var result = 0;
|
||||
|
||||
var changeLogIds = commitDto.ChangeLogItems.Select(c => c.Id);
|
||||
var changeLogIds = dtos.Select(c => c.Id);
|
||||
var comment = commitDto.Comment;
|
||||
|
||||
using var transaction = await db.Database.BeginTransactionAsync(token);
|
||||
|
||||
result += await MarkAsDeleted(commitDto.Id, changeLogIds, commitDto.Creation, token);
|
||||
result += await AddRange(idDiscriminator, commitDto, token);
|
||||
result += await AddRange(idDiscriminator, commitDto, dtos, token);
|
||||
|
||||
await transaction.CommitAsync(token);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<int> UpdateRange(ChangeLogCommitDto commitDto, CancellationToken token)
|
||||
public async Task<int> UpdateRange(ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token)
|
||||
{
|
||||
var dbSet = db.Set<ChangeLog>();
|
||||
|
||||
var updatedIds = commitDto.ChangeLogItems.Select(d => d.Id);
|
||||
var updatedIds = dtos.Select(d => d.Id);
|
||||
var updatedEntities = dbSet
|
||||
.Where(s => updatedIds.Contains(s.Id))
|
||||
.ToDictionary(s => s.Id);
|
||||
|
||||
using var transaction = await db.Database.BeginTransactionAsync(token);
|
||||
|
||||
foreach (var dto in commitDto.ChangeLogItems)
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
var updatedEntity = updatedEntities.GetValueOrDefault(dto.Id);
|
||||
if (updatedEntity is null)
|
||||
|
@ -25,19 +25,13 @@ public class ChangeLogCommitDto
|
||||
/// </summary>
|
||||
public string Comment { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Набор изменений
|
||||
/// </summary>
|
||||
public IEnumerable<ChangeLogValuesDto> ChangeLogItems { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ChangeLogCommitDto(Guid idAuthor, string comment, IEnumerable<ChangeLogValuesDto> changeLogItems)
|
||||
public ChangeLogCommitDto(Guid idAuthor, string comment)
|
||||
{
|
||||
IdAuthor = idAuthor;
|
||||
Comment = comment;
|
||||
ChangeLogItems = changeLogItems;
|
||||
Creation = DateTimeOffset.UtcNow;
|
||||
}
|
||||
|
||||
|
@ -15,9 +15,10 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository<ChangeL
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator">ключ справочника</param>
|
||||
/// <param name="dto">коммит с изменениями</param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto dto, CancellationToken token);
|
||||
Task<int> AddRange(Guid idDiscriminator, ChangeLogCommitDto dto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Пометить записи как удаленные
|
||||
@ -44,17 +45,19 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository<ChangeL
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator"></param>
|
||||
/// <param name="commitDto">коммит с изменениями</param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token);
|
||||
Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Редактирование записей
|
||||
/// </summary>
|
||||
/// <param name="commitDto">коммит с изменениями</param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateRange(ChangeLogCommitDto commitDto, CancellationToken token);
|
||||
Task<int> UpdateRange(ChangeLogCommitDto commitDto, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получение актуальных записей на определенный момент времени (с пагинацией)
|
||||
|
Loading…
Reference in New Issue
Block a user