using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using MapsDb.Interfaces; using MapsDb.Models; using MapsModels.DsModels; using Microsoft.EntityFrameworkCore; namespace MapsDb.DataService { public class ServiceObjectDs : IServiceObjectDs { private PostgresDbContext _context; public ServiceObjectDs(){ _context = new PostgresDbContext(); } public Task> GetIndexListAsync(){ return Task.Factory.StartNew(GetAllServiceObject); } private IList GetAllServiceObject() { return _context.ServiceObject.Select(ServiceObject => new ServiceObjectEditDsM { ServiceObjectId = ServiceObject.ServiceObjectId, RoadId = ServiceObject.RoadId, RegionId = ServiceObject.RegionId, SettlementId = ServiceObject.SettlementId, LocationLeft = ServiceObject.LocationLeft, LocationRight = ServiceObject.LocationRight, ServiceObjectTypeId = ServiceObject.ServiceObjectTypeId, DepartmentAffiliationId = ServiceObject.DepartmentAffiliationId, LocationAxis = ServiceObject.LocationAxis, Distance = ServiceObject.Distance, Capacity = ServiceObject.Capacity, ArrangementElements = ServiceObject.ArrangementElements, }).OrderByDescending(ServiceObject => ServiceObject.ServiceObjectId).ToList(); } public Task CreateAsync(ServiceObjectEditDsM data){ return Task.Factory.StartNew(()=> { return Create(data); }); } private ServiceObject Create(ServiceObjectEditDsM data) { ServiceObject Model = InsertModel(data); _context.ServiceObject.Add(Model); _context.SaveChanges(); return Model; } public Task UpdateAsync(ServiceObjectEditDsM data, int id){ return Task.Factory.StartNew(()=> { return Update(data, id); }); } private ServiceObject Update(ServiceObjectEditDsM data, int id) { ServiceObject Model = InsertModel(data); Model.ServiceObjectId = id; _context.ServiceObject.Update(Model); _context.SaveChanges(); return Model; } public ServiceObject InsertModel(ServiceObjectEditDsM data){ ServiceObject Model = new ServiceObject{ ServiceObjectId = data.ServiceObjectId, RoadId = data.RoadId, RegionId = data.RegionId, SettlementId = data.SettlementId, LocationLeft = data.LocationLeft, LocationRight = data.LocationRight, ServiceObjectTypeId = data.ServiceObjectTypeId, DepartmentAffiliationId = data.DepartmentAffiliationId, LocationAxis = data.LocationAxis, Distance = data.Distance, Capacity = data.Capacity, ArrangementElements = data.ArrangementElements, }; return Model; } public async Task DeleteAsync(int Id) { var ServiceObject = await _context.ServiceObject.SingleOrDefaultAsync(x => x.ServiceObjectId == Id); _context.ServiceObject.Remove(ServiceObject); return await _context.SaveChangesAsync(); } } }