Exemplo n.º 1
0
        public async Task <Responses.Watcher> SetWatcher(SetWatcher request)
        {
            // Get watcher
            var watcher = await _mainDbContext.Watchers.FindAsync(request.WatcherId);

            // Watcher not found
            if (watcher == null)
            {
                throw new NotFoundException(WatcherMessage.WatcherNotFound);
            }

            // Buy limit must be lower than watcher value
            if (WatcherExpression.BuyLimitMustBeLowerThanWatcherValue(request.Buy).Invoke(watcher))
            {
                throw new ConflictException(new Conflict <SetWatcherConflictReason>(SetWatcherConflictReason.BUY_LIMIT_MUST_BE_LOWER_THAN_WATCHER_VALUE, string.Format(WatcherMessage.BuyLimitMustBeLowerThanWatcherValue, watcher.Value)));
            }

            // Sell limit must be higher than watcher value
            if (WatcherExpression.SellLimitMustBeHigherThanWatcherValue(request.Sell).Invoke(watcher))
            {
                throw new ConflictException(new Conflict <SetWatcherConflictReason>(SetWatcherConflictReason.SELL_LIMIT_MUST_BE_HIGHER_THAN_WATCHER_VALUE, string.Format(WatcherMessage.SellLimitMustBeHigherThanWatcherValue, watcher.Value)));
            }

            // Watcher already got liquidated
            if (WatcherExpression.WatcherSold().Invoke(watcher))
            {
                throw new ConflictException(new Conflict <SetWatcherConflictReason>(SetWatcherConflictReason.WATCHER_ALREADY_LIQUIDATED, WatcherMessage.WatcherAlreadyLiquidated));
            }

            // Watcher already bought
            if (WatcherExpression.WatcherAlreadyBought(request.Buy).Invoke(watcher))
            {
                throw new ConflictException(new Conflict <SetWatcherConflictReason>(SetWatcherConflictReason.WATCHER_ALREADY_BOUGHT, string.Format(WatcherMessage.WatcherAlreadyBought, watcher.EntryPrice)));
            }

            // Watcher already sold
            if (WatcherExpression.WatcherAlreadySold(request.Sell).Invoke(watcher))
            {
                throw new ConflictException(new Conflict <SetWatcherConflictReason>(SetWatcherConflictReason.WATCHER_ALREADY_SOLD, string.Format(WatcherMessage.WatcherAlreadySold, watcher.EntryPrice)));
            }

            // Set watcher
            watcher.Set(request.Buy, request.Sell, request.Quantity);

            // Update
            _mainDbContext.Watchers.Update(watcher);

            // Save
            await _mainDbContext.SaveChangesAsync();

            // Response
            var response = _mapper.Map <Responses.Watcher>(watcher);

            // Log
            _logger.LogInformation("{@Event}, {@UserId}, {@Request}, {@Response}", "WatcherSet", request.UserId, request, response);

            // Return
            return(response);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> SetWatcher(int watcherId, [FromBody] SetWatcher request)
        {
            // Request
            request.UserId    = "cesarbmx";
            request.WatcherId = watcherId;

            // Reponse
            var response = await _watcherService.SetWatcher(request);

            // Return
            return(Ok(response));
        }
Exemplo n.º 3
0
        public static void UserProcess()
        {
            Menu.DrawInterface();
            switch (AskUserForNumber())
            {
            //-----------------GetOfferHistory---------------------------------------------------------
            case 1:
                Console.WriteLine("Wpisz parametr/ bez parametru: 1/2");
                var userKey = Console.ReadLine();
                if (userKey == "1")
                {
                    Console.WriteLine("Prosze podac wartosc minimalna --dataOferty--:");
                    var question1 = Console.ReadLine();
                    Console.WriteLine("Prosze podac wartosc max --dataOferty--:");
                    var             question2       = Console.ReadLine();
                    GetOfferHistory getOfferHistory = new GetOfferHistory(Convert.ToInt32(question1), Convert.ToInt32(question2));
                    Console.ReadKey();
                    Console.Clear();
                    UserProcess();
                }
                else if (userKey == "2")
                {
                    GetOfferHistory getOfferHistory = new GetOfferHistory();
                    Console.ReadKey();
                }
                break;

            //-----------------SetWatcher-------------------------------------------------------
            case 2:
                Console.WriteLine("Podaj nazwę firmy której akcje chcesz kupić z listy poniżej =>");
                GenerateList.GetInstrumentList();
                var question3 = Console.ReadLine().ToUpper();
                Console.WriteLine(question3);
                Console.WriteLine("Podaj wartość do której wykonać zakup: (od 1 do 100)");
                var        question4 = Console.ReadLine();
                SetWatcher set1      = new SetWatcher(question3, Convert.ToInt32(question4));
                Client     cli       = new Client(GetNameOfUser(), set1);
                var        x         = GetOfferHistory.ListOfBuyOfferts(cli);
                JSonActions.SaveTransactionToJson(x);
                Console.ReadKey();
                Console.Clear();
                UserProcess();
                break;

            //-----------------GetTransactions---------------------------------------------------

            /*
             * Wylistowanie wszystkich dokonanych dotychczas tranzakcji
             * (pobranie pliku transactions.xml, sparsowanie i wypisanie).
             * Proszę dodać również filtrowanie, np. Pokazać
             * wszystkie tranzakcje dla danego instrumentu, itp.
             */
            case 3:
                JSonActions.GetListOfBuyTransactionFromJson();
                Console.WriteLine("akcje ktorej firmy chcesz zobaczyc z listy poniżej =>");
                GenerateList.GetInstrumentList();
                var question5 = Console.ReadLine().ToUpper();

                //spytaj czy wypisac dodatkowo z pliku dla danego instrumentu
                //wypisz tylko te z podana nazwa
                Console.ReadKey();
                Console.Clear();
                UserProcess();
                break;

            //-----------------Run-----------------------------------------------------------

            /*
             * Włączenie się do giełdy.Włączenie się do giełdy
             * (Run) będzie skutkowało iteracją przez wszystkie
             * stworzone oferty. Po kolei będą listowane oferty w CMD
             * i pokazywane będą ewentualne tranzakcje dokonane przez
             * nasz program (wcześniej ustawione przez SetWatcher).
             * Każda tranzakcja musi być zapisana w transactions.xml
             * jako <Transaction><Date>data></Date><Instrument>instrument
             * </Instrument><Value>value</Value></Transaction>.
             * Po run powinien startować dostawca ofert (można dodać ew. opóźnienia w ofertach, żeby
             * można było obserwować sesję na żywo).
             */

            case 4:
                Console.WriteLine("switch/wybrałes numer 4");
                GetOfferHistory getOfferHistory2 = new GetOfferHistory(2000);
                Console.ReadKey();
                Console.Clear();
                UserProcess();
                break;

            //--------------------default--------------------------------------------------
            default:
                Console.WriteLine("nie wybrałeś poprawnego numeru menu");
                Console.ReadKey();
                Console.Clear();
                UserProcess();
                break;
            }
        }
Exemplo n.º 4
0
 public Client(string clientName, SetWatcher setWatcher)
 {
     this.clientName = clientName;
     this.setWatcher = setWatcher;
 }