public virtual GetClientItemsCommandResponse GetClientItemsCommand(GetClientItemsCommandRequest request)
        {
            var response = new GetClientItemsCommandResponse();

            try {
                // Raise Initialization Event
                var initialization = GetClientItemsCommandInitialization;
                if (initialization != null)
                {
                    initialization(request, response);
                }
                // Raise Execute Event
                var execute = GetClientItemsCommandExecute;
                if (execute != null)
                {
                    response = execute(request);
                }
                // Raise Complete Event
                var complete = GetClientItemsCommandComplete;
                if (complete != null)
                {
                    complete(request, response);
                }
            }
            catch (Exception exception) {
                // Raise Error Event
                var error = GetClientItemsCommandError;
                if (error != null)
                {
                    error(request, response, exception);
                }
            }
            return(response);
        }
Esempio n. 2
0
        public override GetClientItemsCommandResponse OnGetClientItemsCommandExecute(GetClientItemsCommandRequest request)
        {
            var response = new GetClientItemsCommandResponse();

            try
            {
                response.GetClientItemsResponse = _apiCommands.ApiGetClientItems(request.GetClientItemsRequest);
            }
            catch (Exception ex)
            {
                response.Exception = ex;
                response.Message   = ex.Message;
            }
            return(response);
        }
 public abstract GetClientItemsCommandResponse OnGetClientItemsCommandExecute(GetClientItemsCommandRequest request);
        public SyncItems SyncClientsProducts(int batchRecords, int skip, int clientCode, long cnpjCpf)
        {
            var response = new SyncItems();

            if (skip == 0)
            {
                _clienteprodutoRepository.ExecuteSqlCommand("UPDATE FoccoWebApiClienteProduto SET Ativo = 0 WHERE CodigoCliente = " + clientCode + ";");
            }

            var apiReq = new GetClientItemsCommandRequest()
            {
                GetClientItemsRequest = new GetClientItemsRequest()
                {
                    Skip = skip, Take = 250, CodigoCliente = clientCode, CnpjCpf = cnpjCpf
                }
            };

            while (true)
            {
                var apiResp = base._foccoErpApiCommands.GetClientItemsCommand(apiReq);

                if (apiResp.Success && apiResp.GetClientItemsResponse.ClientItems.Rows != null)
                {
                    var rows = apiResp.GetClientItemsResponse.ClientItems.Rows.DistinctBy(x => x.ID, null);
                    foreach (var row in rows)
                    {
                        InsertUpdateClientProduct(clientCode, row);
                        response.TotalProcessedRows += 1;
                    }

                    base._unitOfWork.Commit();

                    response.TotalRowCount = apiResp.GetClientItemsResponse.ClientItems.TotalRowCount;
                }
                else
                {
                    response.EndOfRecords = true;
                    break;
                }


                var controller = (response.TotalProcessedRows + apiReq.GetClientItemsRequest.Take) - batchRecords;

                if (controller <= 0)
                {
                    apiReq.GetClientItemsRequest.Skip += apiReq.GetClientItemsRequest.Take;
                }
                else
                {
                    if (apiReq.GetClientItemsRequest.Take > controller)
                    {
                        apiReq.GetClientItemsRequest.Skip += (apiReq.GetClientItemsRequest.Take - controller);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            return(response);
        }