Example #1
0
        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);
                }
            }
        }
Example #3
0
        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());
        }
Example #4
0
        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();
        }
Example #5
0
        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));
        }