/
Kibnet
/
Unlimotion
Обзор
Документация
Войти
/
Kibnet
/
Unlimotion
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Unlimotion.Server.ServiceInterface/TaskService.cs
71 строка
2 KB
Kibnet Philosoff
refactor: Удалён дублирующийся код
09 дек 2024, 22:47
09 дек 2024, 22:47
664be0b
Код
Авторство
О чём код?
using AutoMapper; using Raven.Client.Documents; using Raven.Client.Documents.Linq; using Raven.Client.Documents.Session; using ServiceStack; using Unlimotion.Server.ServiceModel; using System.Linq; using System.Threading.Tasks; using Raven.Client.Documents.BulkInsert; using Unlimotion.Server.ServiceModel.Molds.Tasks; using System.Net; using Unlimotion.Domain; namespace Unlimotion.Server.ServiceInterface { public class TaskService : Service { public IAsyncDocumentSession RavenSession { get; set; } public IDocumentStore DocumentStore { get; set; } public IMapper Mapper { get; set; } private const string TaskPrefix = "TaskItem/"; [Authenticate] public async Task<TaskItemPage> Get(GetAllTasks request) { var session = Request.ThrowIfUnauthorized(); var uid = session.UserAuthId; var tasks = await RavenSession.Query<TaskItem>() .Where(chat => chat.UserId == uid) .ToListAsync(); return new TaskItemPage { Tasks = tasks.Select(e => Mapper.Map<TaskItemMold>(e)).ToList() }; } [Authenticate] public async Task<TaskItemMold> GetAsync(GetTask request) { var session = Request.ThrowIfUnauthorized(); var decodedId = WebUtility.UrlDecode(request.Id); var task = await RavenSession.Query<TaskItem>() .Where(chat => chat.Id == decodedId) .FirstAsync(); return Mapper.Map<TaskItemMold>(task); } [Authenticate] public async Task Post(BulkInsertTasks request) { var session = Request.ThrowIfUnauthorized(); var uid = session.UserAuthId; var tasks = request.Tasks.Select(e => Mapper.Map<TaskItem>(e)).ToList(); using var insert = DocumentStore.BulkInsert(); foreach (var task in tasks) { task.UserId = uid; task.Id = $"{TaskPrefix}{task.Id}"; if (task.BlocksTasks != null) { task.BlocksTasks = task.BlocksTasks.Select(s => $"{TaskPrefix}{s}").ToList(); } if (task.ContainsTasks != null) { task.ContainsTasks = task.ContainsTasks.Select(s => $"{TaskPrefix}{s}").ToList(); } await insert.StoreAsync(task); } } } }