public CreateStockViewModel(IEventAggregator eventAggregator, IStocksService stocksService) { model = new CreateStockModel(); this.eventAggregator = eventAggregator; this.stocksService = stocksService; AddValidationRules(); }
public ActionResult Create(CreateStockModel input) { var item = _itemRepo.Find(input.ItemId); if (item == null) { return(HttpNotFound("Cannot find item with specified itemId")); } if (ModelState.IsValid) { _itemRepo.AddStocks(item.Id, CreateStockModel.Explode(input)); LogActivity(string.Format("added {0} stock items to ", input.Quantity), TimelineActivityObjectType.Item, item.Name, item.Id); FlashSuccess(string.Format("added {0} stock items to {1}", input.Quantity, item.Name)); return(RedirectToAction("Details", "Items", new { id = input.ItemId })); } ViewBag.StockConditionId = new SelectList(Db.StockConditions, "Id", "Name", input.StockConditionId); input = new CreateStockModel { ItemId = input.ItemId, Item = item }; return(View(input)); }
public ActionResult Create(int id) { ViewBag.StockConditionId = new SelectList(Db.StockConditions, "Id", "Name"); var item = _itemRepo.Find(id); if (item == null) { return(HttpNotFound("Cannot find item with given ID")); } var stockModel = CreateStockModel.Create(item); return(View(stockModel)); }
public async Task <IActionResult> ListNewStock(CreateStockModel model) { // Validate model if (!ModelState.IsValid) { return(View()); } // Additional validations Group group = await _context.Groups.FindAsync(model.Group_Id); if (group == null) { StatusMessage = $"Failed: Could not find group {model.Group_Id}"; return(View()); } // Check if group already has a stock if (_context.StockDefinitions.Any(s => s.Group_Id == model.Group_Id)) { StatusMessage = $"Failed: {group.Name} already has a stock!"; return(View()); } if (model.Amount < 0) { StatusMessage = $"Failed: Amount must be positive!"; return(View()); } if (model.Keep < 0) { StatusMessage = $"Failed: Keep must be positive!"; return(View()); } // Check if ticker is taken if (_context.StockDefinitions.Any(s => s.Ticker == model.Ticker)) { StatusMessage = $"Failed: A ticker {model.Ticker} already exists!"; return(View()); } if (model.Initial_Value < 1) { StatusMessage = $"Failed: Initial value must be greater or equal to 1!"; return(View()); } if (model.Keep > model.Amount) { StatusMessage = $"Failed: Keep must be less than Amount!"; return(View()); } // Create stock definition StockDefinition stockDef = new StockDefinition() { Ticker = model.Ticker, Group_Id = model.Group_Id, Current_Value = model.Initial_Value }; // Add stock definition to database await _context.StockDefinitions.AddAsync(stockDef); // Create stock object for keeping StockObject keepStock = new StockObject() { Id = Guid.NewGuid().ToString(), Amount = model.Keep, Owner_Id = model.Group_Id, Ticker = model.Ticker, }; // Add await _context.StockObjects.AddAsync(keepStock); // Create stock sale for issued part StockOffer sellOffer = new StockOffer() { Id = Guid.NewGuid().ToString(), Order_Type = "SELL", Target = model.Initial_Value, Ticker = model.Ticker, Amount = model.Amount - model.Keep, Owner_Id = model.Group_Id }; // Add await _context.StockOffers.AddAsync(sellOffer); // Save changes if successful await _context.SaveChangesAsync(); StatusMessage = $"Successfully issued {model.Amount} ${model.Ticker}"; await VoopAI.ecoChannel.SendMessageAsync($":new: Welcome {model.Amount} {model.Ticker}, from {group.Name} to the market at ¢{model.Initial_Value}, with an initial {sellOffer.Amount} on the market!"); return(RedirectToAction("Index")); }