Exemple #1
0
        public ResponseMessageData <StoreModel> StoreAvailableForAddress(StoreAvailableModel model)
        {
            try
            {
                var response = new ResponseMessageData <StoreModel>();

                if (model.AddressInfo.IsMap == false)
                {
                    AppInit.Container.Resolve <IStoreService>().StoreAvailableForAddress(model, response);
                }
                else
                {
                    AppInit.Container.Resolve <IStoreService>().StoreAvailableForAddressMap(model, response);
                }


                if (response.IsSuccess == false)
                {
                    return(response);
                }

                return(response);
            }
            catch (Exception ex)
            {
                SharedLogger.LogError(ex);
                return(ResponseMessageData <StoreModel> .CreateCriticalMessage("No fue posible obtener una sucursal disponible para esa dirección"));
            }
        }
        public StoreModel StoreAvailableForAddress(StoreAvailableModel model, ResponseMessageData <StoreModel> response)
        {
            using (_repositoryStore)
            {
                int franchiseId;
                var stores = FactoryAddress.GetQueryToSearchStore(_repositoryStore.InnerDbEntities, model.FranchiseCode,
                                                                  model.AddressInfo, out franchiseId);

                return(GetStoreAvailable(response, stores, true));
            }
        }
        public StoreModel StoreAvailableForAddressMap(StoreAvailableModel model, ResponseMessageData <StoreModel> response)
        {
            using (_repositoryStore)
            {
                var lstStoresCoverage = _repositoryStore.GetAvailableCoverageByFrachiseCode(model.FranchiseCode);

                if (lstStoresCoverage == null || lstStoresCoverage.Count == 0)
                {
                    response.IsSuccess = false;
                    response.Message   = "La franquicia no tiene configurada la cobertura de sus sucursales";
                    return(null);
                }

                List <int> storesIds;

                try
                {
                    storesIds = CalculateStoresCoverages(lstStoresCoverage, model.AddressInfo);
                }
                catch (Exception ex)
                {
                    SharedLogger.LogError(ex, lstStoresCoverage, model.AddressInfo);
                    throw;
                }

                if (storesIds.Count == 0)
                {
                    response.IsSuccess = false;
                    response.Message   = "No existe cobertura en esa dirección";
                    return(null);
                }

                var stores = _repositoryStore.GetStoresByIds(storesIds);

                return(GetStoreAvailable(response, stores, true));
            }
        }
        private void ValidateStore()
        {
            var orderModel = OrderService.OrderModel;

            if (orderModel == null)
            {
                return;
            }

            var franchise = orderModel.Franchise;

            if (franchise == null || String.IsNullOrEmpty(franchise.Code))
            {
                return;
            }

            var address = orderModel.LstAddressInfo.FirstOrDefault(e => e.IsSelected);

            if (address == null)
            {
                return;
            }

            DisposeSubscription();

            var model = new StoreAvailableModel
            {
                FranchiseCode = OrderService.OrderModel.Franchise.Code,
                AddressInfo   = address.AddressInfo
            };

            _subscription = _client.ExecutionProxy.ExecuteRequest <StoreAvailableModel, StoreAvailableModel, ResponseMessageData <StoreModel>,
                                                                   ResponseMessageData <StoreModel> >(model, TransferDto.TransferDto.SameType, SharedConstants.Server.STORE_HUB,
                                                                                                      SharedConstants.Server.AVAILABLE_FOR_ADDRESS_STORE_HUB_METHOD, TransferDto.TransferDto.SameType)
                            .Subscribe(e => OnResultStoreAvailableOk(e, true), OnResultStoreAvailableError);
        }