Beispiel #1
0
        public bool CanCreate(SapBusinessPartner sapBusinessPartner, SapSaleOrderModel billingRequest)
        {
            if (sapBusinessPartner == null)
            {
                _logger.LogError($"Failed at generating billing request for user: {billingRequest.UserId}.");
                return(false);
            }

            if (string.IsNullOrEmpty(sapBusinessPartner.FederalTaxID))
            {
                _logger.LogError($"Can not create billing request for user id : {billingRequest.UserId}, FiscalId: {billingRequest.FiscalID} and user type: {billingRequest.PlanType}");
                return(false);
            }

            return(true);
        }
        public async Task <SapBusinessPartner> TryGetBusinessPartner(int userId, string cuit, int userPlanTypeId)
        {
            var incompleteCardCode = _businessPartnerMapper.MapDopplerUserIdToSapBusinessPartnerId(userId, userPlanTypeId);

            var message = new HttpRequestMessage
            {
                RequestUri = new Uri($"{_sapServiceConfig.BaseServerUrl}{_sapServiceConfig.BusinessPartnerConfig.Endpoint}?$filter=startswith(CardCode,'{incompleteCardCode}') and Frozen eq 'tNO'"),
                Method     = HttpMethod.Get
            };

            var cookies = await StartSession();

            message.Headers.Add("Cookie", cookies.B1Session);
            message.Headers.Add("Cookie", cookies.RouteId);

            var client      = _httpClientFactory.CreateClient();
            var sapResponse = await client.SendAsync(message);

            // Should throw error because if the business partner doesn't exists it returns an empty json.
            sapResponse.EnsureSuccessStatusCode();

            var fiscalId = string.IsNullOrEmpty(cuit) ? null : cuit;

            var businessPartnersList = JsonConvert.DeserializeObject <SapBusinessPartnerList>(await sapResponse.Content.ReadAsStringAsync());
            var businessPartner      = businessPartnersList.value.FirstOrDefault(x => x.FederalTaxID == fiscalId);

            if (businessPartner == null)
            {
                var amountBusinessPartnersForSameUser = businessPartnersList.value.Count();
                if (amountBusinessPartnersForSameUser >= _sapConfig.MaxAmountAllowedAccounts)
                {
                    throw new ArgumentOutOfRangeException("User can't have more than 10 accounts in Sap");
                }
                businessPartner = new SapBusinessPartner()
                {
                    CardCode = $"{incompleteCardCode}{amountBusinessPartnersForSameUser}"
                };
            }

            return(businessPartner);
        }