wtorek, 23 października 2018

Giełda - implementacja repozytorium MarketSquareDataSource

Aplikacja posiada trzy projekty:
  • Repozytorium
  • UnitTesty
  • MVC
Założeniem jest stworzenie repozytorium w którym będzie zbudowany model danych w oparciu o entity framework. Dodatkowo widoki z ms sql-a będą odwzorowane w klasach gdyż EF nie radzi sobie z widokami bez klucza głównego (albo czegokolwiek co go przypomina). Dodatkowo chce żeby cała logika aplikacji "siedziała" w repozytorium. Aplikacja MVC będzie się łączyć z repo za pomocą interfejsów.
Założeniem moim jest aby każde zapytanie o jakiekolwiek dane było kierowane do repozytorium poprzez interfejs.
MarketSquareDataSource 

public interface IMarketSquareDataSource
    {
       IEnumerable<MarketSquareDataSource> viewAllStockInMarketSquare();
    }

    public class MarketSquareDataSource : IMarketSquareDataSource
    {
        public string stockName;
        public int stockNumber;
        public decimal? stockPriceBuy;
        public decimal? stockPriceSell;
        public string transactionStatus;
        public int marketS_id;
        public bool transactionActive;
        public string stockSeria;
        public int stockId;

        public IEnumerable<MarketSquareDataSource> viewAllStockInMarketSquare()
        {
            using (var db = new StockExchangeEntities())
            {
                var result = db.MarketSquare.Join(db.BuyingSelling,
                    MS => MS.bs_id,
                    BS => BS.bs_id,
                    (MS, BS) => new
                    {
                     transactionStatus = BS.bs_action,
                     marketS_id = MS.mark_id,
                     stockPriceBuy = MS.mark_sharePriceBuy,
                     stockPriceSell = MS.mark_sharePriceSell,
                     stock_id = MS.stock_id,
                     stockNumber = MS.mark_numberOfShares,
                     transactionActive = MS.mark_aktywny
                    }).Join(db.Stock,
                    MS => MS.stock_id,
                    St => St.stock_id,
                    (MS, St) => new
                    {
                     transactionStatus = MS.transactionStatus,
                     marketS_id = MS.marketS_id,
                     stockPriceBuy = MS.stockPriceBuy,
                     stockPriceSell = MS.stockPriceSell,
                     stock_id = MS.stock_id,
                     stockNumber = MS.stockNumber,
                     transactionActive = MS.transactionActive,
                     stockN_id = St.stockN_id,
                     stockSeria = St.stock_seria
                    }).Join(db.StockName,
                    MS => MS.marketS_id,
                    SN => SN.stockN_id,
                    (MS,SN) => new MarketSquareDataSource
                    {
                    transactionStatus = MS.transactionStatus,
                    marketS_id = MS.marketS_id,
                    stockPriceBuy = MS.stockPriceBuy,
                    stockPriceSell = MS.stockPriceSell,
stockNumber = MS.stockNumber == null ? 0 : (int)MS.stockNumber,    transactionActive = MS.transactionActive == null ? false : (bool)MS.transactionActive,
                    stockName = SN.stockN_name,
                    stockSeria = MS.stockSeria,
                    stockId = MS.stock_id == null ? 0 : (int)MS.stock_id
                    }).AsEnumerable();
                return result;
            }
        }
    }

Brak komentarzy:

Prześlij komentarz

 Po wielu miesiącach przerwy Czteroletnim exodusie do bloga ismartdev, który zdechł w zeszłym roku w listopadzie, na powrót wstąpiłem w ten ...