public bool AddProduct(Domain.Model.Product product)
        {
            try
            {
                var productDbOrject = new Product()
                {
                    ProductName = product.ProductName,
                    Price       = product.Price
                };
                var stockDbObject = new Stock()
                {
                    ProductId = productDbOrject.ProductId,
                    NumberOfDefectiveItems = product.ProductStocksDamage,
                    NumberOfItemsAvailable = product.ProductStocksDamage
                };

                _cookiesDbContext.Products.Add(productDbOrject);
                _cookiesDbContext.Stocks.Add(stockDbObject);

                return(_cookiesDbContext.SaveChanges() > 0);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
        public void VerificaVinculoProdutoVsProdutoPortifolioAlteracao(ProdutoPortfolio ProdPortfolio, ProdutoPortfolio ProdPortfolioPre)
        {
            if (ProdPortfolio.StateCode.HasValue)
            {
                if (ProdPortfolio.StateCode.Value == (int)Domain.Enum.ProdutoPortfolio.StateCode.Inativo)
                {
                    return;
                }
            }

            if (ProdPortfolioPre.Produto == null)
            {
                throw new ArgumentException("(CRM) Erro de dados: O campo Produto obrigatório não preenchido em Portifolio do produto");
            }

            if (ProdPortfolioPre.Portfolio == null)
            {
                throw new ArgumentException("(CRM) Erro de dados: O campo Portfolio obrigatório não preenchido em Portifolio do produto");
            }

            if (ProdPortfolio.Produto == null)
            {
                ProdPortfolio.Produto = new Lookup(ProdPortfolioPre.Produto.Id, ProdPortfolioPre.Produto.Type);
            }

            if (ProdPortfolio.Portfolio == null)
            {
                ProdPortfolio.Portfolio = new Lookup(ProdPortfolioPre.Portfolio.Id, ProdPortfolioPre.Portfolio.Type);
            }

            Domain.Model.Portfolio portfolio = RepositoryService.Portfolio.Retrieve(ProdPortfolio.Portfolio.Id);
            Domain.Model.Product   produto   = RepositoryService.Produto.Retrieve(ProdPortfolio.Produto.Id);

            if (portfolio == null)
            {
                throw new ArgumentException("(CRM) Portfólio não encontrado");
            }

            if (produto == null)
            {
                throw new ArgumentException("(CRM) Produto não encontrado");
            }

            if (portfolio.Tipo == (int)Domain.Enum.Portfolio.Tipo.Solucao)
            {
                if (portfolio.UnidadeNegocio.Id == produto.UnidadeNegocio.Id)
                {
                    throw new ArgumentException("(CRM) Para portfólios do tipo Solução a únidade de negócios do produto não pode ser igual a do portfólio.");
                }
            }
            else
            {
                if (portfolio.UnidadeNegocio.Id != produto.UnidadeNegocio.Id)
                {
                    throw new ArgumentException("(CRM) O Produto e o Portfolio não estão na mesma Unidade de Negócio.");
                }
            }
        }
예제 #3
0
 public static DataAccess.Model.Products MapProduct(Domain.Model.Product data_products)
 {
     return(new DataAccess.Model.Products()
     {
         ProductId = data_products.ProductId,
         ProductName = data_products.ProductName,
         Cost = data_products.Cost
     });
     // constructor requires a string name and a price
 }
        /// <summary>
        /// Method to update the quantity available for a product at a specific store location
        /// </summary>
        /// <param name="productId"></param>
        /// <param name="locationId"></param>
        /// <param name="newUpdatedQuantity"></param>
        /// <returns></returns>
        //public Domain.Model.Inventory UpdateTheQuantity(int productId, int locationId, int newUpdatedQuantity)
        //{
        //    var inventoryAvailable = table
        //        .First(i => (i.ProductId == productId) && (i.LocationId == locationId));

        //    var businessInventory = mapper.Map<Domain.Model.Inventory>(inventoryAvailable);
        //    businessInventory.Quantity = newUpdatedQuantity;
        //    return businessInventory;

        //}


        //public void UpdateTheQuantity(Domain.Model.OrderLine orderline, Domain.Model.Product product, Domain.Model.Location location)
        public void UpdateTheQuantity(int amount, Domain.Model.Product product, int id)
        {
            var inventoryAvailableRow = table
                                        .First(i => (i.ProductId == product.ProductId) && (i.LocationId == id));

            var newInventory = mapper.Map <DataAccess.Model.Inventory>(inventoryAvailableRow);

            newInventory.Quantity = amount; // change the quantity (given row of prod. and loc. ID) to the quantity in viewmodel
            _context.Entry(inventoryAvailableRow).CurrentValues.SetValues(newInventory);
        }
예제 #5
0
 public static Model.Product MapPrduct(Domain.Model.Product product)
 {
     return(new Model.Product
     {
         ProdId = product.ProdId,
         ProdName = product.ProdName,
         ProdDescription = product.ProdDescription,
         ProdPrice = product.ProdPrice,
         OrderList = product.OrderList.Select(MapOrderLists).ToList(),
         StoreInventory = product.StoreInventory.Select(MapStoreInventory).ToList()
     });
 }
예제 #6
0
        public Product(Domain.Model.Product product)
        {
            CrossCutting.Raffle.Raffle raffle = new CrossCutting.Raffle.Raffle();

            this.Id               = product.Id;
            this.Name             = product.Name;
            this.ShortDescription = product.DescriptionShort;
            this.Description      = product.Description;
            this.Value            = raffle.value(product);
            this.Order            = product.Order;
            this.Images           = new Image().MappingImages(product.Images.ToList());
            this.Category         = new Category(product.Category);
            this.Department       = new Department();
            this.Raffle           = new Raffle(product.Raffles.ToList());
        }
        public bool UpdateProduct(Domain.Model.Product product)
        {
            try
            {
                var productDbOrject = _cookiesDbContext.Products.First(x => x.ProductId.Equals(product.ProductId));

                productDbOrject.Price       = product.Price;
                productDbOrject.ProductName = product.ProductName;
                productDbOrject.Stock.NumberOfItemsAvailable = product.ProductStocksAvailable;
                productDbOrject.Stock.NumberOfDefectiveItems = product.ProductStocksDamage;
                return(_cookiesDbContext.SaveChanges() > 0);
            }
            catch (ArgumentNullException ex)
            {
                throw ex;
            }
        }
예제 #8
0
        private bool CustoAtualFoiModificado(Domain.Model.Product target, Domain.Model.Product pre)
        {
            if (target.CustoAtual.HasValue)
            {
                if (pre.CustoAtual.HasValue)
                {
                    if (target.CustoAtual.Value == pre.CustoAtual.Value)
                    {
                        return(false);
                    }
                }

                return(true);
            }
            else if (pre.CustoAtual.HasValue)
            {
                return(true);
            }

            return(false);
        }
예제 #9
0
        public void Teste_AtualizarCamposProduto()
        {
            int  pagina      = 1;
            bool moreRecords = false;

            do
            {
                var lista = RepositoryService.Produto.ListarTodosProdutos(ref pagina, 500, out moreRecords);

                foreach (var item in lista)
                {
                    var produto = new Domain.Model.Product(OrganizationName, IsOffline)
                    {
                        ID   = item.ID,
                        EKit = false,
                        ComercializadoForaKit = false,
                        PossuiSubstituto      = false,
                        IntegrarNoPlugin      = true
                    };

                    RepositoryService.Produto.Update(produto);
                }
            }while (moreRecords);
        }
 public void SaveProduct(Domain.Model.Product product)
 {
     _context.Products.Add(product);
     _context.SaveChanges();
 }
예제 #11
0
 public async Task CreateProductAsync(Domain.Model.Product entity)
 {
     var persistenceModel = mapper.Map <Persistence.Model.Product>(entity);
     await repository.CreateAsync(persistenceModel);
 }
예제 #12
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            if (context.Depth > 2)
            {
                return;
            }

            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
            case Domain.Enum.Plugin.MessageName.Create:

                Entity entidadeAlterada      = (Entity)context.InputParameters["Target"];
                Domain.Model.Product produto = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                //Inserir produto na lista de preço
                new Intelbras.CRM2013.Domain.Servicos.ListaPrecoService(context.OrganizationName, context.IsExecutingOffline).Persistir(produto);

                #region SellOut


                //Verifica se o codigo do produto foi alterado
                if (produto.Codigo != null)
                {
                    string resposta;

                    XDocument xmlroot = new XDocument(
                        new XDeclaration("1.0", "utf-8", "no"),
                        new XElement("Produto",
                                     new XElement("Idprodutocrm", produto.ID),
                                     new XElement("Idprodutoerp", produto.Codigo),
                                     new XElement("Statuscode", 1),
                                     new XElement("Statecode", 0)
                                     ));

                    string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                    string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                    string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                    bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                        context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                    if (resultado == false)
                    {
                        throw new ArgumentException(resposta);
                    }
                }
                #endregion


                break;

            case Domain.Enum.Plugin.MessageName.Update:
                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    Entity entidadeAlterada1         = (Entity)context.InputParameters["Target"];
                    Entity entidadePost              = (Entity)context.PostEntityImages["imagem"];
                    Domain.Model.Product produto1    = entidadeAlterada1.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);
                    Domain.Model.Product PostProduto = entidadePost.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                    if (produto1.Status.HasValue &&
                        produto1.Status == (int?)Domain.Enum.Produto.StateCode.inativo &&
                        produto1.RazaoStatus != null && (int)produto1.RazaoStatus == (int)Domain.Enum.Produto.StatusCode.Descontinuado)
                    {
                        new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, serviceFactory).DescontinuarProduto(PostProduto);
                    }

                    if (produto1.IntegrarNoPlugin.HasValue && !produto1.IntegrarNoPlugin.Value)
                    {
                        string ret = new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, serviceFactory).IntegracaoBarramento(PostProduto);
                    }

                    #region SellOut

                    //Verifica se o codigo do produto foi alterado
                    if (produto1.Codigo != null || produto1.RazaoStatus.HasValue)
                    {
                        string resposta;

                        XDocument xmlroot = new XDocument(
                            new XDeclaration("1.0", "utf-8", "no"),
                            new XElement("Produto",
                                         new XElement("Idprodutocrm", PostProduto.ID),
                                         new XElement("Idprodutoerp", PostProduto.Codigo),
                                         new XElement("Statuscode", PostProduto.RazaoStatus),
                                         new XElement("Statecode", PostProduto.Status)
                                         ));

                        string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                        string usuario = ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                        string senha   = ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                        bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                            context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                        if (resultado == false)
                        {
                            throw new ArgumentException(resposta);
                        }
                    }
                    #endregion
                }
                break;

            case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity &&
                    context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                {
                    var ProdutoPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, serviceFactory);
                    var ProdutoPos = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, serviceFactory);


                    #region SellOut
                    if (ProdutoPre.Status != ProdutoPos.Status)
                    {
                        string resposta;

                        XDocument xmlroot = new XDocument(
                            new XDeclaration("1.0", "utf-8", "no"),
                            new XElement("Produto",
                                         new XElement("Idprodutocrm", ProdutoPos.ID),
                                         new XElement("Statecode", ProdutoPos.Status)
                                         ));

                        string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                        string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                        string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                        bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                            context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                        if (resultado == false)
                        {
                            throw new ArgumentException(resposta);
                        }
                    }

                    #endregion
                }
                break;
            }
        }
 public ProductViewModel(Domain.Model.Product product)
 {
     Name         = product.Name;
     Price        = string.Format("{0:C}", product.UnitPrice);
     UnitsInStock = product.UnitsInStock;
 }
예제 #14
0
 public void Add(Domain.Model.Product item)
 {
     throw new NotImplementedException();
 }
예제 #15
0
        public void Execute(IServiceProvider serviceProvider)
        {
            var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(null);
            ITracingService             trace          = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            if (context.Depth > 2)
            {
                return;
            }

            try
            {
                switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                {
                case Domain.Enum.Plugin.MessageName.Create:
                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        Entity entidadeAlterada      = (Entity)context.InputParameters["Target"];
                        Domain.Model.Product produto = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                        #region SellOut

                        //Verifica se o codigo do produto foi alterado
                        if (produto.Codigo != null)
                        {
                            string resposta;

                            XDocument xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Produto",
                                             new XElement("Idprodutocrm", produto.ID),
                                             new XElement("Idprodutoerp", produto.Codigo),
                                             new XElement("Statuscode", produto.RazaoStatus),
                                             new XElement("Statecode", produto.Status),
                                             new XElement("DescricaoProduto", produto.Descricao)
                                             ));

                            string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                            string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                            string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                            bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                                context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                        }
                        #endregion
                    }

                    break;

                case Domain.Enum.Plugin.MessageName.Update:

                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        Entity entidadeAlterada          = (Entity)context.InputParameters["Target"];
                        Entity entidadePost              = (Entity)context.PostEntityImages["imagem"];
                        Domain.Model.Product produto     = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);
                        Domain.Model.Product PostProduto = entidadePost.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline);

                        if (produto.Status.HasValue &&
                            produto.Status == (int?)Domain.Enum.Produto.StateCode.inativo &&
                            produto.RazaoStatus != null && (int)produto.RazaoStatus == (int)Domain.Enum.Produto.StatusCode.Descontinuado)
                        {
                            new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, service).DescontinuarProduto(PostProduto);
                        }

                        if (produto.IntegrarNoPlugin.HasValue && !produto.IntegrarNoPlugin.Value)
                        {
                            string ret = new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(PostProduto);
                        }

                        #region SellOut

                        //Verifica se o codigo do produto foi alterado
                        if (produto.Codigo != null || produto.RazaoStatus.HasValue)
                        {
                            string resposta;

                            XDocument xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Produto",
                                             new XElement("Idprodutocrm", PostProduto.ID),
                                             new XElement("Idprodutoerp", PostProduto.Codigo),
                                             new XElement("Statuscode", PostProduto.RazaoStatus),
                                             new XElement("Statecode", PostProduto.Status),
                                             new XElement("DescricaoProduto", PostProduto.Descricao)
                                             ));

                            string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                            string usuario = ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                            string senha   = ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                            bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                                context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                        }
                        #endregion
                    }
                    break;


                case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                    if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity &&
                        context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                    {
                        var ProdutoPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, service);
                        var ProdutoPos = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, service);


                        #region SellOut
                        if (ProdutoPre.Status != ProdutoPos.Status)
                        {
                            string resposta;

                            XDocument xmlroot = new XDocument(
                                new XDeclaration("1.0", "utf-8", "no"),
                                new XElement("Produto",
                                             new XElement("Idprodutocrm", ProdutoPos.ID),
                                             new XElement("Statecode", ProdutoPos.Status)
                                             ));

                            string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();;

                            string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser");
                            string senha   = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd");

                            bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName,
                                                                                context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta);

                            if (resultado == false)
                            {
                                throw new ArgumentException(resposta);
                            }
                        }

                        #endregion
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                trace.Trace(SDKore.Helper.Error.GetMessageError(ex));

                string message = SDKore.Helper.Error.Handler(ex);
                throw new InvalidPluginExecutionException(message, ex);
            }
        }
        //private readonly OrdersRepository _orderRepo;

        /// <summary>
        /// Returns the order to be added to the database, given product and order details, and product quantity
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="productId"></param>
        /// <param name="quantity"></param>
        /// <returns></returns>

        //this works! add an orderline:
        //public pamela_soulis_project1.Domain.Model.OrderLine AddingANewOrderLine(Domain.Model.OrderLine orderline, Domain.Model.Product product, Domain.Model.Orders order) //don't need this anymore
        public pamela_soulis_project1.Domain.Model.OrderLine AddingANewOrderLine(Domain.Model.OrderLine orderline, Domain.Model.Product product, int theNewOrderIdToEnter)
        {
            var theOrderToBeAdded = new pamela_soulis_project1.Domain.Model.OrderLine {
                OrderId = theNewOrderIdToEnter, ProductId = product.ProductId, Quantity = orderline.Quantity
            };


            //var theOrderToBeAdded = new pamela_soulis_project1.Domain.Model.OrderLine { OrderId = order.OrderId, ProductId = product.ProductId, Quantity = orderline.Quantity }; //don't need this anymore
            return(theOrderToBeAdded);
        }
예제 #17
0
 public bool Remove(Domain.Model.Product item)
 {
     throw new NotImplementedException();
 }