private async Task DoReceiveBook(BookBase bookBase) { if (_gdaxFile == null || DateTime.Today != _fileDate) { OpenFile(); } if (_productBook == null) { _productBook = await _gdaxClient.GetProductBook(_productType, BookLevel.Full); _gdaxFile.Serialize(_productBook, DateTime.UtcNow); Program.Log.Info("Product book loaded."); } if (_productBook.Update(bookBase)) { _gdaxFile.Serialize(bookBase); } else { _productBook = null; Program.Log.Error("Some event are missing, book order will be fully reloaded."); } }
public void SerializeProductBook() { var product = new ProductBook(42); product.Buys.Add(new ProductOffer { OrderId = Guid.NewGuid(), Price = 4210.2m, Size = 0.004m }); product.Sells.Add(new ProductOffer { OrderId = Guid.NewGuid(), Price = 3852.12m, Size = 2.56m }); product.Sells.Add(new ProductOffer { OrderId = Guid.NewGuid(), Price = 3642.12m, Size = 7.12m }); using (var memory = new MemoryStream()) { using (var serial = GdaxFile.OpenWrite(memory, true)) { serial.Serialize(product, DateTime.UtcNow); } memory.Seek(0, SeekOrigin.Begin); using (var serial = GdaxFile.OpenRead(memory, true)) { var read = serial.DeserializeProductBook(); product.ShouldBeEquivalentTo(read); } } }
public async Task <IActionResult> PutProductBook(string id, ProductBookDAO productBookDao) { var product = new Product(); product.Title = productBookDao.Title; product.Price = productBookDao.Price; product.ReleaseYear = productBookDao.ReleaseYear; product.Language = productBookDao.Language; product.Type = ProductType.Book; product.FilePath = productBookDao.FilePath; product.PreviewFilePath = productBookDao.PreviewFilePath; var productBook = new ProductBook(); var bookSubject = new ProductBookSubject(); productBook.Subject = bookSubject; productBook.Author = productBookDao.Author; productBook.Publisher = productBookDao.Publisher; productBook.Product = product; productBook.Code = productBookDao.Code; ChangeLog.AddCreatedLog(_context, "Books", productBook); if (id != productBookDao.Code) { return(BadRequest()); } if (id != productBook.Code) { return(BadRequest()); } _context.Entry(productBook).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProductBookExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public void Serialize(ProductBook book, DateTime startDate) { if (_writer.BaseStream.Position == 0) { StartDate = startDate; WriteHeader(_writer); } _writer.Write(Constants.GdaxFile.OrderBookType); book.Serialize(_writer); _writer.Flush(); }
public async Task <ActionResult <ProductBook> > PostProductBook(ProductBookDAO productBookDao) { var product = new Product(); product.Title = productBookDao.Title; product.Price = productBookDao.Price; product.ReleaseYear = productBookDao.ReleaseYear; product.Language = productBookDao.Language; product.Type = ProductType.Book; product.FilePath = productBookDao.FilePath; product.PreviewFilePath = productBookDao.PreviewFilePath; _context.Products.Add(product); var book = new ProductBook(); var bookSubject = new ProductBookSubject(); book.Author = productBookDao.Author; book.Publisher = productBookDao.Publisher; var booksConsecutive = _context.TableConsecutives.Single(tableConsecutive => tableConsecutive.Table == "Libros"); book.Code = booksConsecutive.GetCurrentCode(); book.Product = product; try { bookSubject = _context.ProductBookSubjects.Single(bookSubject => bookSubject.Id == productBookDao.SubjectId); } catch { bookSubject = null; } book.Subject = bookSubject; _context.ProductBooks.Add(book); ChangeLog.AddCreatedLog(_context, "Books", book); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (ProductExists(product.Id)) { return(Conflict()); } else if (ProductBookExists(book.Code)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetProductBook", new { id = book.Code }, book)); }