public async Task <IActionResult> Create(ProductOutput productOutput)
        {
            if (ModelState.IsValid)
            {
                productOutput.Id       = 0;
                productOutput.DateTime = DateTime.Now;
                productOutput.Product  = null;
                var product = _context.Products.Find(productOutput.ProductId);
                if (productOutput.Qtde <= product.Qtde)
                {
                    _context.ProductOutputs.Add(productOutput);
                    await _context.SaveChangesAsync();

                    product.Qtde = product.Qtde - productOutput.Qtde;
                    _context.Products.Update(product);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View(productOutput));
                }
            }
            else
            {
                return(View(productOutput));
            }
        }
        public async Task <IActionResult> Get(Guid productId)
        {
            ProductOutput output = await _getProductDetailsUseCase.Execute(productId);

            _presenter.Populate(output);
            return(_presenter.ViewModel);
        }
        public IResult Add(ProductOutput productOutput)
        {
            List <StockStore> products = _stockStoreDal.GetAll(p => p.Id == productOutput.ProductAcceptanceId);

            for (int i = 0; i < products.Count; i++)
            {
                if (products[i].Count < productOutput.Count)
                {
                    return(new ErrorResult(Messages.CountError));
                }
                else
                {
                    StockStore product = new StockStore
                    {
                        Count               = products[i].Count - productOutput.Count,
                        Barcode             = products[i].Barcode,
                        Id                  = products[i].Id,
                        UnitPrice           = products[i].UnitPrice,
                        DrawerId            = products[i].DrawerId,
                        ProductAcceptanceId = products[i].ProductAcceptanceId,
                        ProductUnitId       = products[i].ProductUnitId,
                        ShelfId             = products[i].ShelfId,
                        StoreId             = products[i].StoreId
                    };

                    _stockStoreDal.Update(product);
                }
            }
            _productOutputDal.Add(productOutput);
            return(new SuccessResult(Messages.AddedProductOutput));
        }
        public ActionResult Create(int id)
        {
            var prouctOut     = _context.Products.Find(id);
            var productOutput = new ProductOutput();

            productOutput.ProductId = id;
            productOutput.Product   = prouctOut;
            productOutput.DateTime  = DateTime.Now;
            return(View(productOutput));
        }
Beispiel #5
0
        public IActionResult Delete(ProductOutput productOutput)
        {
            var result = _productOutputService.Delete(productOutput);

            if (result.Success)
            {
                return(Ok(result.Message));
            }

            return(BadRequest(result.Message));
        }
Beispiel #6
0
    public List <ProductOutput> GetData_ProductOutputList(int timeType)
    {
        TimeType             type = (TimeType)timeType;
        List <ProductOutput> list = new List <ProductOutput>();

        switch (type)
        {
        case TimeType.Day:
            for (int i = 0; i < 8; i++)
            {
                int           num           = i + 65;
                byte[]        bt            = new byte[] { (byte)num };
                ASCIIEncoding aSCIIEncoding = new ASCIIEncoding();
                string        str           = aSCIIEncoding.GetString(bt);
                ProductOutput p             = new ProductOutput();
                p.SetData(i, "产品" + str, Random.Range(500, 5000));
                list.Add(p);
            }
            break;

        case TimeType.Month:
            for (int i = 0; i < 8; i++)
            {
                int           num           = i + 65;
                byte[]        bt            = new byte[] { (byte)num };
                ASCIIEncoding aSCIIEncoding = new ASCIIEncoding();
                string        str           = aSCIIEncoding.GetString(bt);
                ProductOutput p             = new ProductOutput();
                p.SetData(i, "产品" + str, Random.Range(5000, 50000));
                list.Add(p);
            }
            break;

        case TimeType.Year:
            for (int i = 0; i < 8; i++)
            {
                int           num           = i + 65;
                byte[]        bt            = new byte[] { (byte)num };
                ASCIIEncoding aSCIIEncoding = new ASCIIEncoding();
                string        str           = aSCIIEncoding.GetString(bt);
                ProductOutput p             = new ProductOutput();
                p.SetData(i, "产品" + str, Random.Range(50000, 500000));
                list.Add(p);
            }
            break;

        default:
            break;
        }
        return(list);
    }
Beispiel #7
0
        public void Populate(ProductOutput output)
        {
            if (output == null)
            {
                ViewModel = new NotFoundResult();
                return;
            }

            ViewModel = new ObjectResult(new ProductDetailsModel(
                                             output.ProductId,
                                             output.Name,
                                             output.Description,
                                             output.Price,
                                             output.Available));
        }
        public Response Update(ProductOutput productOutput)
        {
            Response      response   = new Response();
            SqlConnection connection = new SqlConnection();

            connection.ConnectionString = ConnectionHelper.GetConnectionString();

            SqlCommand command = new SqlCommand();

            command.CommandText =
                "UPDATE PRODUCT_OUTPUT SET DATASAIDA = @DATASAIDA, IDFUNCIONARIO = @IDFUNCIONARIO, VALORTOTAL = @VALORTOTAL, IDFORNECEDORES = @IDCLIENTE WHERE ID = @ID";
            command.Parameters.AddWithValue("@DATASAIDA", productOutput.ExitDate);
            command.Parameters.AddWithValue("@IDFUNCIONARIO", productOutput.EmployeeID);
            command.Parameters.AddWithValue("@VALORTOTAL", productOutput.TotalValue);
            command.Parameters.AddWithValue("@IDCLIENTE", productOutput.ClientID);
            command.Parameters.AddWithValue("@ID", productOutput.ID);

            command.Connection = connection;

            try
            {
                connection.Open();
                int nLinhasAfetadas = command.ExecuteNonQuery();
                if (nLinhasAfetadas != 1)
                {
                    response.Success = false;
                    response.Message = "Registro não encontrado!";
                    return(response);
                }

                response.Success = true;
                response.Message = "Atualizado com sucesso.";
            }
            catch (Exception ex)
            {
                response.Success        = false;
                response.Message        = "Erro no banco de dados, contate o administrador.";
                response.StackTrace     = ex.StackTrace;
                response.ExceptionError = ex.Message;
            }
            finally
            {
                connection.Close();
            }
            return(response);
        }
Beispiel #9
0
        public virtual ActionResult Index(int id)
        {
            using (var dbContext = new AllureContext())
            {
                var product = dbContext
                              .Set <Product>()
                              .Include(p => p.Localized)
                              .SingleOrDefault(c => c.Id == id);

                if (product == null)
                {
                    throw new HttpException(404, string.Format("product {0} doesn't exist", id.ToString()));
                }

                var model = new ProductOutput(product, this.LanguageCode);
                return(View(CreateViewModel(model)));
            }
        }
        public SingleResponse <int> Insert(ProductOutput productOutput)
        {
            SingleResponse <int> response = new SingleResponse <int>();

            SqlConnection connection = new SqlConnection();

            connection.ConnectionString = ConnectionHelper.GetConnectionString();

            SqlCommand command = new SqlCommand();

            command.CommandText =
                "INSERT INTO PRODUCTS_OUTPUT (DATASAIDA, IDFUNCIONARIO, VALORTOTAL, IDCLIENTE) VALUES (@DATASAIDA, @IDFUNCIONARIO, @VALORTOTAL, @IDCLIENTE) SELECT SCOPE_IDENTITY()";
            command.Parameters.AddWithValue("@DATASAIDA", productOutput.ExitDate);
            command.Parameters.AddWithValue("@IDFUNCIONARIO", productOutput.EmployeeID);
            command.Parameters.AddWithValue("@VALORTOTAL", productOutput.TotalValue);
            command.Parameters.AddWithValue("@IDCLIENTE", productOutput.ClientID);

            command.Connection = connection;

            try
            {
                connection.Open();
                int idGerado = Convert.ToInt32(command.ExecuteScalar());
                response.Success = true;
                response.Message = "Cadastrado com sucesso.";
                response.Data    = idGerado;
            }
            catch (Exception ex)
            {
                response.Success        = false;
                response.Message        = "Erro no banco de dados, contate o administrador.";
                response.StackTrace     = ex.StackTrace;
                response.ExceptionError = ex.Message;
            }
            finally
            {
                connection.Close();
            }
            return(response);
        }
Beispiel #11
0
        private ProductOutput CreateProduct()
        {
            var product = new Product()
            {
                Name           = "Product 01",
                Code           = 1,
                Brand          = "Brand 01",
                ExpirationDate = new DateTime(2017, 12, 23),
                DeliveryDate   = new DateTime(2017, 07, 03),
                SubTitle       = "Product 01 Subtitle",
                Price          = 18.30M
            };


            var productOutput = new ProductOutput()
            {
                Products = new List <Product>()
                {
                    product
                }
            };

            return(productOutput);
        }
Beispiel #12
0
        public async Task <ProductOutput> GetSearchAsync(ProductSearchInput productSearchInput)
        {
            if (string.IsNullOrEmpty(productSearchInput.Brand) && string.IsNullOrEmpty(productSearchInput.ScreenSize))
            {
                throw new InvalidArgumentException();
            }
            try
            {
                var    indexName   = ElasticSearchItemsConst.ProductIndexName;
                var    searchQuery = new Nest.SearchDescriptor <ProductElasticIndexDto>();
                string term        = "";
                if (productSearchInput.ScreenSize != null)
                {
                    term = "screensizes";
                    searchQuery
                    .Query(x => x
                           .Terms(c => c
                                  .Verbatim()
                                  .Field(p => p.ScreenSize)
                                  .Terms(productSearchInput.ScreenSize.ToLower())
                                  ))
                    .Aggregations(a => a
                                  .Terms(term, t => t
                                         .Field("screenSize.keyword")
                                         .MinimumDocumentCount(1))
                                  );
                }
                if (!String.IsNullOrEmpty(productSearchInput.Brand))
                {
                    term = "searchingArea";
                    searchQuery
                    .Query(x => x.Match(m =>
                                        m.Field(f => f.SearchingArea)
                                        .Query(productSearchInput.Brand.ToLower())
                                        .Analyzer("ngram_analyzer")
                                        )
                           )
                    .Aggregations(a => a
                                  .Terms(term, t => t
                                         .Field("screenSize.keyword")
                                         .MinimumDocumentCount(1))
                                  );;
                }

                var searchResultData = await _elasticSearchService.SimpleSearchAsync <ProductElasticIndexDto, int>(indexName, searchQuery);

                var aggregationResponse = searchResultData.Aggregations.Terms(term);


                var aggregationList = new List <Aggregation>();

                foreach (var item in aggregationResponse.Buckets)
                {
                    var aggregation = new Aggregation();
                    aggregation.Key      = item.Key;
                    aggregation.DocCount = item.DocCount;
                    aggregationList.Add(aggregation);
                }
                var productElasticIndexList = from opt in searchResultData.Documents
                                              select new ProductElasticIndexDto
                {
                    SearchingArea = opt.SearchingArea,
                    Id            = opt.Id,
                    Brand         = opt.Brand,
                    ModelName     = opt.ModelName,
                    ScreenSize    = opt.ScreenSize,
                    Price         = opt.Price,
                    Stock         = opt.Stock,
                };

                var output = new ProductOutput();
                output.AggregationList            = aggregationList;
                output.ProductElasticIndexDtoList = productElasticIndexList.ToList();
                return(await Task.FromResult(output));
            }
            catch (Exception ex)
            {
                return(await Task.FromException <ProductOutput>(ex));
            }
        }
Beispiel #13
0
        public async Task <BaseOutput <object> > GetProductByBarcode(string barcode)
        {
            var product = await _dbContext.Products
                          .Where(a => a.Barcode == barcode)
                          .FirstOrDefaultAsync();

            if (product == null)
            {
                return(new BaseOutput <object>
                {
                    IsSuccessful = false,
                    Message = $"product with barcode = {barcode} not found.",
                    Payload = ""
                });
            }

            var productStr  = JsonConvert.SerializeObject(product);
            var productInfo = new ProductOutput
            {
                ProductInfo = JsonConvert.DeserializeObject <ProductInfo>(productStr)
            };

            var ingredients = await _dbContext.Ingredients
                              .Where(a => a.ProductId == product.Id)
                              .ToListAsync();

            var ingredientsStr = JsonConvert.SerializeObject(ingredients);

            productInfo.Ingredients = JsonConvert.DeserializeObject <List <IngredientOutput> >(ingredientsStr);

            var additives = await _dbContext.Additives
                            .Where(a => product.Additives.Contains(a.OriginalId))
                            .ToListAsync();

            var additivesStr = JsonConvert.SerializeObject(additives);

            productInfo.Additives = JsonConvert.DeserializeObject <List <AdditiveOutput> >(additivesStr);

            var splitAllergens = product.Allergens.Split(new char[] { ',' });
            var allergens      = await _dbContext.Allergies
                                 .Where(a => splitAllergens.Contains(a.OriginalId))
                                 .ToListAsync();

            var allergenStr = JsonConvert.SerializeObject(allergens);

            productInfo.Allergens = JsonConvert.DeserializeObject <List <AllergyOutput> >(allergenStr);

            var wikiAllergens = await _dbContext.WikiAllergies.ToListAsync();

            foreach (var wikiAllergy in wikiAllergens)
            {
                var selected = productInfo.Allergens.Where(a => a.Name.Contains(wikiAllergy.Name.ToLower())).ToList();
                selected.ForEach(a =>
                {
                    a.PotentialReactions = wikiAllergy.PotentialReactions;
                    a.Remarks            = wikiAllergy.Remarks;
                });
            }

            return(new BaseOutput <object>
            {
                IsSuccessful = true,
                Message = $"product with barcode = {barcode} found.",
                Payload = productInfo
            });
        }
Beispiel #14
0
 private void btnOutput_Click(object sender, EventArgs e)
 {
     productOutput = productOutput ?? new ProductOutput();
     frmLayout.panelContents.Controls.Clear();
     frmLayout.panelContents.Controls.Add(productOutput);
 }
Beispiel #15
0
        public async void GetHtmlAsync()
        {
            var httpClient   = new HttpClient();
            var urlGenerator = new UrlGenerator();

            var url  = urlGenerator.CreateUrl();
            var html = await httpClient.GetStringAsync(url);

            var htmlDocument = new HtmlDocument();

            htmlDocument.LoadHtml(html);

            var productsHtml = htmlDocument.DocumentNode.Descendants("div")
                               .Where(node => node.GetAttributeValue("class", "")
                                      .Equals("offers list")).ToList();

            var productOutput    = new ProductOutput();
            var productListItems = new List <HtmlNode>();

            try
            {
                productListItems = productsHtml[0].Descendants("article")
                                   .Where(node => node.GetAttributeValue("data-ad-id", "") != null).ToList();
            }

            catch (Exception e)
            {
                Console.WriteLine("No results found matching your requirements");
            }

            if (productListItems != null)
            {
                foreach (var productListItem in productListItems)
                {
                    // Title
                    productOutput.Title = productListItem.Descendants("h2")
                                          .Where(node => node.GetAttributeValue("class", "")
                                                 .Equals("offer-title ds-title")).FirstOrDefault().InnerText.Trim();
                    //Console.WriteLine("Name: " + product.Title);

                    // Subtitle
                    try
                    {
                        productOutput.Subtitle = productListItem.Descendants("h3")
                                                 .Where(node => node.GetAttributeValue("data-type", "")
                                                        .Equals("complement")).FirstOrDefault().InnerText.Trim();
                        //Console.WriteLine("Description: " + product.Subtitle);
                    }
                    catch (System.NullReferenceException ex)
                    {
                        //Console.WriteLine("Description: There is no given description for this product");
                    }

                    // Price
                    try
                    {
                        productOutput.Price = productListItem.Descendants("span")
                                              .Where(node => node.GetAttributeValue("class", "")
                                                     .Equals("offer-price__number ds-price-number")).FirstOrDefault().InnerText.Trim();
                        //Console.WriteLine("Price: " + product.Price);
                    }
                    catch (System.NullReferenceException ex)
                    {
                        //Console.WriteLine("Price: There is no given price for this product");
                    }

                    // Year
                    try
                    {
                        productOutput.Year = productListItem.Descendants("li")
                                             .Where(node => node.GetAttributeValue("data-code", "")
                                                    .Equals("year")).FirstOrDefault().InnerText.Trim();
                        //Console.WriteLine("Year: " + product.Year);
                    }
                    catch (System.NullReferenceException ex)
                    {
                        //Console.WriteLine("Year: There is no given year for this product");
                    }

                    // Mileage
                    try
                    {
                        productOutput.Mileage = productListItem.Descendants("li")
                                                .Where(node => node.GetAttributeValue("data-code", "")
                                                       .Equals("mileage")).FirstOrDefault().InnerText.Trim();
                        //Console.WriteLine("Mileage: " + product.Mileage);
                    }
                    catch (System.NullReferenceException ex)
                    {
                        //Console.WriteLine("Mileage: There is no given mileage for this product");
                    }

                    try
                    {
                        productOutput.EngineCapacity = productListItem.Descendants("li")
                                                       .Where(node => node.GetAttributeValue("data-code", "")
                                                              .Equals("engine_capacity")).FirstOrDefault().InnerText.Trim();
                        //Console.WriteLine("Engine capacity: " + product.EngineCapacity);
                    }
                    catch (System.NullReferenceException ex)
                    {
                        //Console.WriteLine("Engine capacity: There is no given engine capacity for this product");
                    }

                    // Link to product
                    productOutput.OfferUrl = productListItem.Descendants("a").FirstOrDefault().GetAttributeValue("href", "");
                    //Console.WriteLine("Link to product: " + product.OfferUrl);

                    //Product image
                    productOutput.ImageUrl = productListItem.Descendants("img").FirstOrDefault().GetAttributeValue("data-src", "");

                    string json = JsonConvert.SerializeObject(productOutput);

                    // Final base64 json
                    var ImgToBase64 = new ImgToBase64();
                    ImgToBase64.ConvertImgToBase64(productOutput.ImageUrl);

                    Console.WriteLine(json);
                    Console.WriteLine("--------------------------------");
                }
            }
        }
 public IResult Update(ProductOutput productOutput)
 {
     _productOutputDal.Update(productOutput);
     return(new SuccessResult(Messages.UpdatedProductOutput));
 }