/
renix
/
TravelGuide
Обзор
Документация
Войти
/
renix
/
TravelGuide
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
back/Controllers/PathController.cs
108 строк
3 KB
atikinvobud
changed
10 апр 2025, 17:06
10 апр 2025, 17:06
0bfa7bc
Код
Авторство
О чём код?
using System.Reflection.Metadata.Ecma335; using System.Security.Claims; using back.DTOs.PathDTO; using back.Extensions; using back.Models; using back.Models.Entities; using back.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace back.Controllers; [ApiController] [Route("path")] [Authorize] public class PathController : ControllerBase { private readonly Context context; private readonly MongoDbContext mongoDbContext; private readonly MatrixService matrixService; private readonly ImageService imageService; public PathController(Context context, MongoDbContext mongoDbContext, MatrixService matrixService, ImageService imageService) { this.context = context; this.mongoDbContext = mongoDbContext; this.matrixService = matrixService; this.imageService = imageService; } [HttpGet("")] public IActionResult Get() { List<GetPathDTO> paths = new List<GetPathDTO>(); foreach (PathEntity path in context.Paths.ToList()) { paths.Add(path.ToDTO()); } return Ok(paths); } [HttpPost("create")] public IActionResult Create([FromBody] PostPathDTO postPathDTO) { PathEntity path = postPathDTO.ToEntity(); context.Paths.Add(path); context.SaveChanges(); var jsonData = new {id = path.Id}; return Ok(jsonData); } [HttpDelete("delete")] public IActionResult Delete([FromBody] DeletePathDTO deletePathDTO) { PathEntity? path = context.Paths.Find(deletePathDTO.id); if (path == null) return NotFound(); context.Paths.Remove(path); context.SaveChanges(); return Ok(); } [HttpPut("update")] public IActionResult Update([FromBody] PutPathDTO putPathDTO) { PathEntity? path =context.Paths.Find(putPathDTO.id); if (path == null) return NotFound(); path.UpdateEntity(putPathDTO); context.SaveChanges(); return Ok(); } [HttpPost("create-route")] public IActionResult Create([FromQuery] int expenses, [FromQuery] int time, [FromQuery] List<string> tags) { int userId = int.Parse( User.FindFirstValue("userId")!); PostPathDTO path = new PostPathDTO() { userId = userId, cityId = 1, movementTypeId = 3, expenses = expenses, timeMinutes = time, mark = null }; PathEntity pathEntity =path.ToEntity(); context.Paths.Add(pathEntity); context.SaveChanges(); Alghotithm alghotithm = new(mongoDbContext,context,matrixService,time,expenses,tags,pathEntity.Id); List<StepEntity> steps =alghotithm.FindBestRoute(); foreach(StepEntity step in steps) { context.Steps.Add(step); } context.SaveChanges(); List<GetPathElementDTO> pathElements = new List<GetPathElementDTO>(); foreach(var el in steps) { pathElements.Add(el.ToElement(context, imageService)); } return Ok(new PathDTO() { pathId = pathEntity.Id, path = pathElements }); } }