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); }
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)); }
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; } }
public Client(string clientName, SetWatcher setWatcher) { this.clientName = clientName; this.setWatcher = setWatcher; }