BusStopDs.cs 2.46 KB
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MapsDb.Interfeces;
using MapsDb.Models;
using MapsModels.DsModels;

namespace MapsDb.DataService
{
    public class BusStopDs : IBusStopDs
    {
        private PostgresDbContext _context;
        public BusStopDs(){
            _context = new PostgresDbContext();
        }
        public void Dispose()
        {
            _context.Dispose();
        }

        public Task<IList<BusStopListDs>> GetAllBusStopAsync(){
            return Task.Factory.StartNew(GetAllBusStop);
        }
        private IList<BusStopListDs> GetAllBusStop()
        {
           return _context.BusStop.Select(x => new BusStopListDs
            {
                Road = x.Road.Name, 
                Region = x.Region.Name,
                Settlement = x.Settlement.Name,
                LocationLeft = x.LocationLeft,
                LocationRight = x.LocationRight,
                StateCommon = x.StateCommon.Value
            }).ToList();
        }

        public Task SaveBusStopAsync(BusStop busStop){
              return Task.Factory.StartNew(()=> { Save(busStop); });
        }
        private void Save(BusStop busStop)
        {
            var busStopFromDb = _context.BusStop.SingleOrDefault(x => x.BusStopId == busStop.BusStopId);;
            if(busStopFromDb != null)
            {
                busStopFromDb = busStop;
            }
            else
            {
                _context.BusStop.Add(busStop);
            }
        }
        public Task<BusStopDetailsDs> FindOneDetailsAsync(int Id){
             return Task.Factory.StartNew(()=> { return FindOneDetails(Id); });
        }
        private BusStopDetailsDs FindOneDetails(int Id){
           return _context.BusStop.Where(x => x.BusStopId == Id).Select(x => new BusStopDetailsDs{
                BusStopId = x.BusStopId,
                Road = x.Road.Name, 
                Region = x.Region.Name,
                Settlement = x.Settlement.Name,
                LocationLeft = x.LocationLeft,
                LocationRight = x.LocationRight,
                StateCommon = x.StateCommon.Value,
                AreaStopAvailability = x.AreaStopAvailability,
                AreaLandAvailability = x.AreaLandAvailability,
                PocketAvailability = x.PocketAvailability,
                ToiletAvailability = x.ToiletAvailability,
                YearBuild = x.YearBuild,
                YearRepair = x.YearRepair
           }).Single();
        }
    }
}