/
renix
/
TravelGuide
Обзор
Документация
Войти
/
renix
/
TravelGuide
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
back/Extensions/LandmarkExtensions.cs
113 строк
5 KB
atikinvobud
фикс эндпоинтов
10 апр 2025, 14:06
10 апр 2025, 14:06
f9d6c3d
Код
Авторство
О чём код?
using System.Threading.Tasks; using back.Controllers; using back.DTOs.LandmarksDTOs; using back.Models; using back.Models.Entities; using Microsoft.EntityFrameworkCore; namespace back.Extensions; public static class LandmarkExtensions { public static LandmarkEntity ToEntity(this PostLandmarkDTO landmarkDTO, ImageService imageService) { return new() { CityId = landmarkDTO.cityId, Name = landmarkDTO.name, Description = landmarkDTO.description, VisitTimeMinutes = landmarkDTO.visitTimeMinutes, VisitCost = landmarkDTO.visitCost, Address = landmarkDTO.address, PhoneNumber = landmarkDTO.phoneNumber, WebSite = landmarkDTO.webSite, ImageId = imageService.UploadFile(new() {FilePath =landmarkDTO.imageLink!}) }; } public static void AddCootdinates(this LandmarkEntity landmarkEntity, double longtitude,double latitude) { landmarkEntity.Longtitude=longtitude; landmarkEntity.Latitude=latitude; } public static void UpdateEntity(this LandmarkEntity landmark, PutLandmarkDTO landmarkDTO, ImageService imageService) { landmark.CityId = landmarkDTO.cityId; landmark.Name = landmarkDTO.name; landmark.Description = landmarkDTO.description; landmark.VisitTimeMinutes = landmarkDTO.visitTimeMinutes; landmark.VisitCost = landmarkDTO.visitCost; landmark.Address = landmarkDTO.address; landmark.PhoneNumber = landmarkDTO.phoneNumber; landmark.WebSite = landmarkDTO.webSite; landmark.ImageId = imageService.UploadFile(new() {FilePath =landmarkDTO.imageLink!}); } public static async Task<GetLandmarkExtendedDTO> ToExtendedDTO(this LandmarkEntity landmark, ImageService imageService, int userId, Context context) { var marks = await context.LandmarkRecomendations.Where(lr => lr.LandmarkId == landmark.Id && lr.UserId == userId).Select(lr =>lr.Mark).ToListAsync(); return new() { CityId =landmark.CityId, id = landmark.Id, name = landmark.Name, description = landmark.Description, address = landmark.Address, phoneNumber = landmark.PhoneNumber, webSite = landmark.WebSite, schedule = "Функция расписания ОбЯзАтЕлЬнО будет реализована в будущем", imageUrl = imageService.GetImage(landmark.ImageId!), mark = marks.Any() ? marks[0] : null }; } public static async Task<GetLandmarkBasicDTO> ToBasicDTO(this LandmarkEntity landmark, ImageService imageService, int UserId, Context context) { var marks = await context.LandmarkRecomendations.Where(lr => lr.LandmarkId == landmark.Id && lr.UserId == UserId).Select(lr =>lr.Mark).ToListAsync(); return new() { id = landmark.Id, name = landmark.Name, description = landmark.Description, image = imageService.GetImage(landmark.ImageId!), mark = marks.Any() ? marks[0] : null }; } public static GetFullLandmarkDTO ToFullDTO(this LandmarkEntity landmark,ImageService imageService, int UserId, Context context) { var marks = context.LandmarkRecomendations.Where(lr => lr.LandmarkId == landmark.Id && lr.UserId == UserId).Select(lr =>lr.Mark).ToList(); var tagNames = context.Landmarks.Where(l => l.Id == landmark.Id).Include(l => l.LandmarkTags).ThenInclude(lt => lt.Tag).SelectMany(l => l.LandmarkTags.Select(lt => lt.Tag!.Name)).ToList(); return new() { id = landmark.Id, cityId = landmark.CityId, name = landmark.Name, description = landmark.Description, visitTimeMinutes = landmark.VisitTimeMinutes, visitCost = landmark.VisitCost, address = landmark.Address, latitude = landmark.Latitude, longtitude = landmark.Longtitude, phoneNumber = landmark.PhoneNumber, webSite = landmark.WebSite, image = imageService.GetImage(landmark.ImageId!), mark = marks.Any() ? marks[0] : null, tags =tagNames }; } public static async Task<GetByCityLandmarkDTO> getByCityLandmarkDTO(this LandmarkEntity landmark, Context context, int userId, ImageService service ) { var marks = await context.LandmarkRecomendations.Where(lr => lr.LandmarkId == landmark.Id && lr.UserId==userId).Select(lr =>lr.Mark).ToListAsync(); return new() { id =landmark.Id, name =landmark.Name, image =service.GetImage(landmark.ImageId!), description =landmark.Description!, mark = marks.Any() ? marks[0] : null, }; } }