fix/mock-methods-for-change-log #27
@ -1,4 +1,4 @@
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using DD.Persistence.Models;
|
using DD.Persistence.Models;
|
||||||
using DD.Persistence.Models.Requests;
|
using DD.Persistence.Models.Requests;
|
||||||
@ -174,4 +174,87 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
|||||||
|
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Метод, который возвращает статистику по количеству изменений в разрезе дней
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="token"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("statistics")]
|
||||||
|
public async Task<ActionResult<IEnumerable<StatisticsChangeLogDto>>> GetStatisticsCountAsync([FromQuery] ChangeLogRequest request, CancellationToken token)
|
||||||
|
{
|
||||||
|
var result = new List<StatisticsChangeLogDto>() {
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-60), ChangesCount = 10},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-50), ChangesCount = 2},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-25), ChangesCount = 560},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-2), ChangesCount = 78},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-1), ChangesCount = 39},
|
||||||
|
};
|
||||||
|
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Метод, который возвращает историю изменений в разрезе дней
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="token"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("history")]
|
||||||
|
public async Task<ActionResult<IEnumerable<HistoryChangeLogDto>>> HistoryChangeLogAsync([FromQuery] ChangeLogRequest request, CancellationToken token)
|
||||||
|
{
|
||||||
|
var userId = Guid.CreateVersion7();
|
||||||
|
var changeLogItemCurrentId = Guid.CreateVersion7();
|
||||||
|
|||||||
|
var changeLogItemCreation = DateTimeOffset.UtcNow;
|
||||||
|
var changeLogItems = new List<ChangeLogDto>()
|
||||||
|
{
|
||||||
|
new ChangeLogDto()
|
||||||
|
{
|
||||||
|
Id = changeLogItemCurrentId,
|
||||||
|
Creation = changeLogItemCreation,
|
||||||
|
IdAuthor = userId,
|
||||||
|
IdEditor = userId,
|
||||||
|
Obsolete = null,
|
||||||
|
Value = new ChangeLogValuesDto(){
|
||||||
|
Id = Guid.CreateVersion7(),
|
||||||
|
Value = new Dictionary<string, object>() {
|
||||||
|
["1"] = new { id = 1, caption = "Изменение 1 (c правкой)" },
|
||||||
|
["2"] = new { id = 2, caption = "Изменение 2 (с правкой)" },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new ChangeLogDto()
|
||||||
|
{
|
||||||
|
Id = Guid.CreateVersion7(),
|
||||||
|
Creation = DateTimeOffset.UtcNow.AddDays(-10),
|
||||||
|
IdAuthor = userId,
|
||||||
|
IdEditor = userId,
|
||||||
|
IdNext = changeLogItemCurrentId,
|
||||||
|
Obsolete = DateTimeOffset.UtcNow.AddDays(-5),
|
||||||
|
Value = new ChangeLogValuesDto(){
|
||||||
|
Id = Guid.CreateVersion7(),
|
||||||
|
Value = new Dictionary<string, object>() {
|
||||||
|
["1"] = new { id = 1, caption = "Изменение 1" },
|
||||||
|
["2"] = new { id = 2, caption = "Изменение 2" },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var result = new List<HistoryChangeLogDto>() {
|
||||||
|
new() {
|
||||||
|
Comment = "Петров И. Ю. попросил внести изменения",
|
||||||
ng.frolov
commented
Дата тут и дата в 214 строке будут отличаться, это приведет к плавающему багу из-за округления. Дата тут и дата в 214 строке будут отличаться, это приведет к плавающему багу из-за округления.
Просто сделай локальную переменную с датой в начале метода и используй её
|
|||||||
|
DateTime = changeLogItemCreation,
|
||||||
|
DiscriminatorId = Guid.CreateVersion7(),
|
||||||
|
User = new UserDto()
|
||||||
|
{
|
||||||
|
Id = userId,
|
||||||
|
DisplayName = "Иванов И. И"
|
||||||
|
},
|
||||||
|
ChangeLogItems = changeLogItems
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
32
DD.Persistence.Models/HistoryChangeLogDto.cs
Normal file
32
DD.Persistence.Models/HistoryChangeLogDto.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
namespace DD.Persistence.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Модель, необходимая для отображения истории по журналу изменений
|
||||||
|
/// </summary>
|
||||||
|
public class HistoryChangeLogDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дата и время изменений
|
||||||
|
/// </summary>
|
||||||
|
public DateTimeOffset DateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Пользователь, совершивший изменение данных
|
||||||
|
/// </summary>
|
||||||
|
public required UserDto User { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Проект, с которым связаны изменения
|
||||||
|
/// </summary>
|
||||||
|
public Guid DiscriminatorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Список изменений
|
||||||
|
/// </summary>
|
||||||
|
public required IEnumerable<ChangeLogDto> ChangeLogItems { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Комментарий к изменению
|
||||||
|
/// </summary>
|
||||||
|
public required string Comment { get; set; }
|
||||||
|
}
|
17
DD.Persistence.Models/Requests/ChangeLogRequest.cs
Normal file
17
DD.Persistence.Models/Requests/ChangeLogRequest.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
namespace DD.Persistence.Models.Requests;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Запрос, используемый для получения данных по журналу операций
|
||||||
|
/// </summary>
|
||||||
|
public class ChangeLogRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дискриминатор задачи
|
||||||
|
/// </summary>
|
||||||
|
public Guid DiscriminatorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Пользователь
|
||||||
|
/// </summary>
|
||||||
|
public Guid UserId { get; set; }
|
||||||
|
}
|
23
DD.Persistence.Models/StatisticsChangeLogDto.cs
Normal file
23
DD.Persistence.Models/StatisticsChangeLogDto.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DD.Persistence.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Модель, необходимая для отображения статистики по журналу изменений
|
||||||
|
/// </summary>
|
||||||
|
public class StatisticsChangeLogDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дата и время изменений
|
||||||
|
/// </summary>
|
||||||
|
public DateTimeOffset DateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Количество изменений
|
||||||
|
/// </summary>
|
||||||
|
public int ChangesCount { get; set; }
|
||||||
|
}
|
23
DD.Persistence.Models/UserDto.cs
Normal file
23
DD.Persistence.Models/UserDto.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DD.Persistence.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Класс, описывающий пользователя
|
||||||
|
/// </summary>
|
||||||
|
public class UserDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Идентификатор пользователя
|
||||||
|
/// </summary>
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Имя пользователя для отображения
|
||||||
|
/// </summary>
|
||||||
|
public required string DisplayName { get; set; }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user
👍