/// <summary>
        /// Set timer on the basis of Response and set request Model
        /// </summary>
        /// <param name="MobileNumber"></param>
        /// <param name="Code"></param>
        /// <param name="CountryName"></param>
        /// <param name="IsSmsSuccessfull"></param>
        /// <param name="ErrorMessage"></param>
        public async void StartTimer(string MobileNumber, string Code, string CountryName, Boolean IsSmsSuccessfull, string ErrorMessage)
        {


            try
            {
                if (Code == null)
                {
                    return;
                }

                MyAttempts = 3;
                PendingSMSRequestModel requestModel = new PendingSMSRequestModel()
                {
                    CountryName = CountryName,
                    SenderPhoneNumber = MobileNumber,
                    IsoCodes = Code,
                    IsSmsSuccessfull = IsSmsSuccessfull,
                    ErrorMessage = ErrorMessage,
                    SmsRequestId = SmsRequestUniqueId
                };

                PendingSmsResponseModel response = await RequestServer.SendingCordinates(requestModel);

                if (response == null || response.IsValid == false)
                {
                    if (!(response == null))
                    {
                        AccessUI accessUi = new AccessUI();
                        accessUi.ShowToast(response.Error);
                    }

                    //Delegate ElapsedEventHandler adding reference of Method to it
                    SmsRequestUniqueId = 0;
                    dn = new ElapsedEventHandler((sender, e) => MyTimer_Elapsed(sender, e, requestModel));
                    myTimer.Elapsed += dn;
                    myTimer.Interval = 10000;
                    myTimer.Enabled = true;
                }



                //If request exist on server 
                else if (response.IsRequestexist)
                {
                    AccessUI accessUi = new AccessUI();
                    accessUi.ShowToast(response.Error);

                    SmsRequestUniqueId = response.SmsRequestId;
                    sendSMS(response.PhoneNumber, response.Code);
                }

                else
                {
                    AccessUI accessUi = new AccessUI();
                    accessUi.ShowToast(response.Error);

                    // Set the Interval to 2 seconds (2000 milliseconds).
                    SmsRequestUniqueId = 0;
                    dn = new ElapsedEventHandler((sender, e) => MyTimer_Elapsed(sender, e, requestModel));
                    myTimer.Elapsed += dn;
                    myTimer.Interval = response.EstimatedTimeToComeAgain * 1000;
                    myTimer.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                AccessUI accessUi = new AccessUI();
                accessUi.ShowToast(ex.Message);
            }
        }
 /// <summary>
 /// Timer Invoked Method
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 /// <param name="requestModel"></param>
 private void MyTimer_Elapsed(object sender, ElapsedEventArgs e, PendingSMSRequestModel requestModel)
 {
     try
     {
         Android.Util.Log.Info("date: ", e.SignalTime.ToString());
         Timer timer = (Timer)sender; // Get the timer that fired the event
         timer.Elapsed -= dn;
         timer.Enabled = false;
         StartTimer(requestModel.SenderPhoneNumber, requestModel.IsoCodes, requestModel.CountryName, false, null);
     }
     catch (Exception ex)
     {
         AccessUI accessUi = new AccessUI();
         accessUi.ShowToast(ex.Message);
     }
 }
        /// <summary>
        /// Method to send SMS . If Failed then Invoked Three times
        /// </summary>
        /// <param name="PhoneNumber"></param>
        /// <param name="Code"></param>
        /// <returns></returns>
        public bool sendSMS(string PhoneNumber, int Code)
        {
            try
            {
                phoneNumberAndCodeDictionary.Clear();
                phoneNumberAndCodeDictionary.Add(PhoneNumber, Code);

                if (MyAttempts > 0)
                {
                    sentPI = PendingIntent.GetBroadcast(this, 0, new Intent(SENT), 0);    //When sms sent OS broadcast and this object gets that broadcast message and fires on receive message
                    SmsManager.Default.SendTextMessage(PhoneNumber, null, Code.ToString(), sentPI, null);
                    MyAttempts--;
                    return true;
                }
                return false;
            }
            catch (Exception ex)
            {
                AccessUI accessUi = new AccessUI();
                accessUi.ShowToast(ex.Message);
                return true;
            }
        }
        /// <summary>
        /// Send Request to Web APi
        /// </summary>
        /// <param name="requestModel"></param>
        /// <returns></returns>
        async public static Task<PendingSmsResponseModel> SendingCordinates(PendingSMSRequestModel requestModel)
        {
            try
            {

                PendingSmsResponseModel responseModel = new PendingSmsResponseModel();
                HttpClient client = new HttpClient();
                client.BaseAddress = ServerRootURL;
                client.DefaultRequestHeaders.Add("Accept", "application/json");
                client.Timeout = TimeSpan.FromMinutes(100);
                string ConcatenatedSrtig = JsonConvert.SerializeObject(requestModel);
                StringContent requestContent = new StringContent(ConcatenatedSrtig);
                requestContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                HttpResponseMessage response = await client.PostAsync(ServerLocation + "pendingverification", requestContent);


                if (response.IsSuccessStatusCode)
                {
                    string responseData = await response.Content.ReadAsStringAsync();
                    responseModel = JsonConvert.DeserializeObject<PendingSmsResponseModel>(responseData);
                    return responseModel;
                }

                else
                {
                    //Check if Any server Error
                    HTTPValidation validation = new HTTPValidation();  
                    bool IsServerError = validation.IsServerError(response.StatusCode);

                    string Message =validation.GetError("", IsServerError);
                    AccessUI accessUi = new AccessUI();
                    accessUi.ShowToast(Message);
                    return null;
                }
            }

            catch (TaskCanceledException)    //TimeOut Excecption
            {
                string Message = "";
                HTTPValidation validation = new HTTPValidation();
                Message = validation.GetError("");

                AccessUI accessUi = new AccessUI();
                accessUi.ShowToast(Message);
                return null;
            }

            catch (WebException)            //Internet Failure
            {
                string Message = "";
                HTTPValidation validation = new HTTPValidation();
                Message = validation.GetError("");

                AccessUI accessUi = new AccessUI();
                accessUi.ShowToast(Message);
                return null;
            }

            catch (System.Exception ex)       //General Exception  
            {
                AccessUI accessUi = new AccessUI();
                accessUi.ShowToast(ex.Message);
                return null;
            }
        }