public static StocksState OnSaveStock(StocksState state, StockSaveAction action)
 {
     return(state with
     {
         Submitted = false,
         Submitting = true,
         StockButtonText = "Create",
         ShowInputDialog = false,
         StockEditMode = false
     });
 }
        public async Task SaveStock(StockSaveAction action, IDispatcher dispatcher)
        {
            var selectedGreenBean = action.GreenBean;

            if (action.GreenBean.Id == 0)
            {
                var result = await _httpClient.PostAsJsonAsync("api/greenbeaninfo", action.GreenBean);

                if (!result.IsSuccessStatusCode)
                {
                    dispatcher.Dispatch(new StockCreateFailureAction(result.ReasonPhrase));
                    return;
                }
                var greenbeans = await _httpClient.GetFromJsonAsync <CoffeeRoastManagement.Shared.Entities.GreenBeanInfo[]>("api/greenbeaninfo");

                selectedGreenBean = greenbeans.FirstOrDefault(x => x.Name == action.GreenBean.Name);
            }
            if (action.Stock.Id == 0)
            {
                action.Stock.SellerContact = action.Contact;
                action.Stock.GreenBeanInfo = selectedGreenBean;

                var result = await _httpClient.PostAsJsonAsync("api/stock", action.Stock);

                if (!result.IsSuccessStatusCode)
                {
                    dispatcher.Dispatch(new StockCreateFailureAction(result.ReasonPhrase));
                }
                else
                {
                    dispatcher.Dispatch(new StockCreateSuccessAction());
                }
            }
            else
            {
                action.Stock.SellerContact = action.Contact;
                action.Stock.GreenBeanInfo = action.GreenBean;
                var result = await _httpClient.PutAsJsonAsync("api/stock", action.Stock);

                if (!result.IsSuccessStatusCode)
                {
                    dispatcher.Dispatch(new StockUpdateFailureAction(result.ReasonPhrase));
                }
                else
                {
                    dispatcher.Dispatch(new StockUpdateSuccessAction());
                }
            }
            dispatcher.Dispatch(new StocksLoadAction());
            dispatcher.Dispatch(new GreenBeansLoadAction());
        }