Пример #1
0
        public bool PushDataToXero(UsageManagementRequest request)
        {
            bool result = true;

            if (IsPush(request.DateTo, request.StoreId))
            {
                //List<UsageManagementModel> lstCalResult = CalUsageManagementwithoutDetail(request);
                List <UsageManagementModel> lstCalResult = GetUsageManagement(request);
                //lstCalResult.Add(new UsageManagementModel()
                //{
                //    Code = "008",
                //    Usage = 2
                //});
                try
                {
                    IngredientSyncRequestDTO model = new IngredientSyncRequestDTO();
                    model.AppRegistrationId = Commons.XeroRegistrationAppId;
                    model.AccessToken       = Commons.XeroAccessToken;
                    model.StoreId           = request.StoreId;

                    var lstIngredient = _ingredientFactory.GetIngredient(null);

                    if (lstIngredient != null && lstIngredient.Count > 0)
                    {
                        lstIngredient = lstIngredient.Where(ww => !string.IsNullOrEmpty(ww.XeroId)).ToList();
                        if (lstIngredient != null && lstIngredient.Count > 0)
                        {
                            foreach (var item in lstCalResult)
                            {
                                var obj = lstIngredient.Where(ww => ww.Code.ToUpper().Equals(item.Code.ToUpper())).FirstOrDefault();
                                if (obj != null)
                                {
                                    model.Items.Add(new IngredientUsageSyncItem()
                                    {
                                        Id           = obj.XeroId,
                                        Code         = obj.Code,
                                        QuantityUsed = (decimal)item.Usage
                                    });
                                }
                            }
                            if (model.Items != null && model.Items.Count > 0)
                            {
                                result = XeroFactory.SyncIngredientsUsageToXero(request.DateTo, request.StoreId, model).Result;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    result = false;
                    _logger.Error(ex);
                }
            }
            return(result);
        }
Пример #2
0
        public bool PushDataToXero(UsageManagementRequest request, List <UsageManagementModel> lstUsages)
        {
            bool result = true;

            //if (IsPush(request.DateTo, request.StoreId))
            //{
            //List<UsageManagementModel> lstCalResult = CalUsageManagementwithoutDetail(request);
            try
            {
                IngredientSyncRequestDTO model = new IngredientSyncRequestDTO();
                model.AppRegistrationId = Commons.XeroRegistrationAppId;
                model.AccessToken       = Commons.XeroAccessToken;
                model.StoreId           = request.StoreId;

                var lstIngredient = XeroFactory.GetIngredientsFromXero(new Models.Xero.XeroBaseModel()
                {
                    AppRegistrationId = Commons.XeroRegistrationAppId,
                    AccessToken       = Commons.XeroAccessToken,
                    StoreId           = request.StoreId
                }).Result;

                if (lstIngredient.Success)
                {
                    foreach (var item in lstUsages)
                    {
                        var obj = lstIngredient.Data.Items.Where(ww => ww.Code.ToUpper().Equals(item.Code.ToUpper())).FirstOrDefault();
                        if (obj != null)
                        {
                            model.Items.Add(new IngredientUsageSyncItem()
                            {
                                Id           = obj.ID,
                                Code         = obj.Code,
                                QuantityUsed = (decimal)item.Usage
                            });
                        }
                    }
                    if (model.Items != null && model.Items.Count > 0)
                    {
                        NSLog.Logger.Info("PushDataToXero Data", model.Items);
                        result = XeroFactory.SyncIngredientsUsageToXero(request.DateTo, request.StoreId, model).Result;
                    }
                }
            }
            catch (Exception ex)
            {
                result = false;
                _logger.Error(ex);
            }
            //}
            return(result);
        }
Пример #3
0
        public static async Task <bool> SyncIngredientsUsageToXero(DateTime dTo, string storeId, IngredientSyncRequestDTO model)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Commons.XeroURL);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response;
                try
                {
                    response = await client.PostAsJsonAsync(Commons.XeroApi_UpdateInventory, model).ConfigureAwait(false);

                    if (response.IsSuccessStatusCode)
                    {
                        //log
                        NSLog.Logger.Info("SyncIngredientsUsageToXero Store", storeId);
                        NSLog.Logger.Info("SyncIngredientsUsageToXero Data", model);
                        _baseFactory.InsertUsageXeroTrackLog(dTo, storeId);
                    }
                    return(response.IsSuccessStatusCode);
                }
                catch (Exception e)
                {
                    _logger.Error(e);
                    return(false);
                }
            }
        }