private void Save_Product(object sender, EventArgs e, Activity currentActivity)
        {
            btn_prd_save.Click -= (sndr, argus) => Save_Product(sndr, argus, currentActivity);
            try
            {
                if (!string.IsNullOrWhiteSpace(txt_ProductName.Text.Trim()))
                {
                    if (gotFile)
                    {
                        CommonModuleResponse obj = new CommonModuleResponse();

                        img_product_view.BuildDrawingCache(true);
                        Bitmap bmap = img_product_view.GetDrawingCache(true);
                        img_product_view.SetImageBitmap(bmap);
                        obj.fileStream = BitmapHelpers.BitmapToByteArray(Bitmap.CreateBitmap(img_product_view.GetDrawingCache(true)));

                        obj.productdata                 = new ProductDetailResponse();
                        obj.productdata.ProductName     = txt_ProductName.Text.Trim();
                        obj.productdata.CategoryID      = objSelectedItem[0].ItemCode;
                        obj.productdata.ProductTypeName = objSelectedItem[0].ItemName;

                        ProgressDialog progressDialog = ProgressDialog.Show(this.Activity, "Please wait...", "Saving your product...", true);
                        new Thread(new ThreadStart(delegate
                        {
                            currentActivity.RunOnUiThread(() => this.SaveProduct(progressDialog, currentActivity, obj));
                        })).Start();
                    }
                    else
                    {
                        throw new Exception("Please capture or chose product image");
                    }
                }
                else
                {
                    throw new Exception("Please provide your product name");
                }
            }
            catch (Exception ex)
            {
                currentActivity.RunOnUiThread(() =>
                {
                    Android.App.AlertDialog.Builder alertDiag = new Android.App.AlertDialog.Builder(currentActivity);
                    alertDiag.SetTitle(Resource.String.DialogHeaderError);
                    alertDiag.SetMessage(ex.Message);
                    alertDiag.SetIcon(Resource.Drawable.alert);
                    alertDiag.SetPositiveButton(Resource.String.DialogButtonOk, (senderAlert, args) =>
                    {
                        //btn_prd_save.Click += (sndr, argus) => Save_Product(sndr, argus, currentActivity);
                    });
                    Dialog diag = alertDiag.Create();
                    diag.Show();
                    diag.SetCanceledOnTouchOutside(false);
                });
            }
        }
        private void SaveProduct(ProgressDialog dialog, Activity curActivity, CommonModuleResponse obj)
        {
            try
            {
                string mStringLoginInfo    = string.Empty;
                string mStringSessionToken = string.Empty;
                try
                {
                    objdb = new DBaseOperations();
                    var lstu = objdb.selectTable();
                    if (lstu != null && lstu.Count > default(int))
                    {
                        var uobj = lstu.FirstOrDefault();
                        if (uobj.Password == " ")
                        {
                            throw new Exception("Please login again");
                        }
                        mStringLoginInfo    = uobj.EmailId;
                        mStringSessionToken = uobj.AuthToken;
                    }
                }
                catch { }

                //var x = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

                var client  = new RestClient(Common.UrlBase);
                var request = new RestRequest("Product/CreateSubCategory", Method.POST);
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("TokenKey", mStringSessionToken);
                //request.AddJsonBody(obj);
                request.AddParameter(new Parameter {
                    Name = "application/json", Type = ParameterType.RequestBody, Value = Newtonsoft.Json.JsonConvert.SerializeObject(obj, new NoColonIsoDateTimeConverter())
                });
                IRestResponse response    = client.Execute(request);
                var           content     = response.Content;
                var           responseObj = Newtonsoft.Json.JsonConvert.DeserializeObject <CommonModuleResponse>(content);
                if (responseObj != null && responseObj.productdata != null && !string.IsNullOrEmpty(responseObj.productdata.ProductId))
                {
                    curActivity.RunOnUiThread(() =>
                    {
                        Android.App.AlertDialog.Builder alertDiag = new Android.App.AlertDialog.Builder(curActivity);
                        alertDiag.SetTitle(Resource.String.DialogHeaderGeneric);
                        alertDiag.SetMessage(string.Format("Your product '{0}' has been saved successfully", obj.productdata.ProductName));
                        alertDiag.SetIcon(Resource.Drawable.success);
                        alertDiag.SetPositiveButton(Resource.String.DialogButtonOk, (senderAlert, args) =>
                        {
                            var siteparam = new List <ItemPayloadModelWithBase64>();
                            siteparam.Add(objSelectedItem.FirstOrDefault());
                            Bundle utilBundle = new Bundle();
                            utilBundle.PutString("siteparam", Newtonsoft.Json.JsonConvert.SerializeObject(siteparam));
                            AddActivityFragment objFragment = new AddActivityFragment();
                            objFragment.Arguments           = utilBundle;
                            Android.Support.V4.App.FragmentTransaction tx = FragmentManager.BeginTransaction();
                            tx.Replace(Resource.Id.m_main, objFragment, Constants.dashboard);
                            tx.Commit();
                        });
                        Dialog diag = alertDiag.Create();
                        diag.Show();
                        diag.SetCanceledOnTouchOutside(false);
                    });
                }
                else
                {
                    if (responseObj != null && !string.IsNullOrEmpty(responseObj.Error))
                    {
                        throw new Exception(responseObj.Error);
                    }
                    else
                    {
                        throw new Exception("Unable to save product right now. Please try again later");
                    }
                }
            }
            catch (Exception ex)
            {
                curActivity.RunOnUiThread(() =>
                {
                    Android.App.AlertDialog.Builder alertDiag = new Android.App.AlertDialog.Builder(curActivity);
                    alertDiag.SetTitle(Resource.String.DialogHeaderError);
                    alertDiag.SetMessage(ex.Message);
                    alertDiag.SetIcon(Resource.Drawable.alert);
                    alertDiag.SetPositiveButton(Resource.String.DialogButtonOk, (senderAlert, args) =>
                    {
                    });
                    Dialog diag = alertDiag.Create();
                    diag.Show();
                    diag.SetCanceledOnTouchOutside(false);
                });
            }
            finally
            {
                if (dialog != null && dialog.IsShowing)
                {
                    dialog.Hide();
                    dialog.Dismiss();
                }
            }
        }