public async Task <cPostCodeDistance> GetCalculatedistanceAsync(string origin, string destination)
        {
            //string origin, destination;
            //origin = "600113";
            //destination = "605008";
            cPostCodeDistance distance = new cPostCodeDistance();

            string uri;

            uri = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=" + origin + ",india&destinations=" + destination + ",india&mode=driving&language=en-EN&sensor=false";
            try
            {
                var client  = new RestClient(uri);
                var request = new RestRequest(Method.GET);
                IRestResponse <cPostCodeDistance> asyncHandle = await client.ExecutePostTaskAsync <cPostCodeDistance>(request);

                distance = (cPostCodeDistance)asyncHandle.Data;
                return(distance);
            }
            catch (Exception ex)
            {
                distance.status = "failed";
                return(distance);
            }
        }
        public async Task <List <cServiceProvider> > ServicesbySearchv1_3(int userid, string userType, string SEARCH)
        {
            List <cServiceProvider> spCollctionlist  = new List <cServiceProvider>();
            List <cPartialSender>   ServiceProviders = new List <cPartialSender>();
            //List<cPartialSender> SendersList = new List<cPartialSender>();

            string retvalue = "1", userPostcode = "";

            try
            {
                string constr = ConfigurationManager.ConnectionStrings["MyAbDbContext"].ConnectionString;

                using (SqlConnection con = new SqlConnection(constr))
                {
                    SqlCommand cmd = new SqlCommand("sp_listServiceProviderforSearch", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataReader reader;

                    SqlParameter paramsearch = new SqlParameter();
                    paramsearch.ParameterName = "@search";
                    paramsearch.Value         = SEARCH;
                    cmd.Parameters.Add(paramsearch);

                    SqlParameter paramuserid = new SqlParameter();
                    paramuserid.ParameterName = "@userID";
                    paramuserid.Value         = userid;
                    cmd.Parameters.Add(paramuserid);

                    SqlParameter paramuserType = new SqlParameter();
                    paramuserType.ParameterName = "@userType";
                    paramuserType.Value         = userType;
                    cmd.Parameters.Add(paramuserType);



                    /*   cmd.Parameters.Add("@Result", SqlDbType.Int);
                     * cmd.Parameters["@Result"].Direction = ParameterDirection.Output;*/

                    con.Open();
                    reader = cmd.ExecuteReader();

                    //retvalue = cmd.Parameters["@Result"].Value.ToString();

                    while (reader.Read())
                    {
                        cPartialSender c = new cPartialSender();
                        c.SenderID          = (int)reader["SenderID"];
                        c.SenderName        = reader["SenderName"].ToString().Trim();
                        c.SenderContactNo_1 = reader["SenderContactNo_1"].ToString().Trim();
                        c.SenderContactNo_2 = reader["SenderContactNo_2"].ToString().Trim();

                        c.ContactHide  = (Int16)reader["ContactHide"];
                        c.cServiceType = reader["cServiceType"].ToString().Trim();
                        c.ServiceDesc  = reader["ServiceDesc"].ToString().Trim();
                        c.postcode     = reader["POSTCODE"].ToString().Trim();

                        if (reader["logopath"] != null)
                        {
                            if (reader["logopath"].ToString().Length > 0)
                            {
                                c.logopath = reader["logopath"].ToString().Trim();
                            }
                        }

                        c.subscribeonoff      = reader["subscribeonoff"].ToString().Trim();
                        c.ReviewReceived      = (int)reader["ReviewReceived"];
                        c.msgCommentsReceived = (int)reader["msgCommentsReceived"];
                        c.msgLikeReceived     = (int)reader["msgLikeReceived"];
                        c.msgTotpublished     = (int)reader["msgTotpublished"];
                        c.msgReadBy           = (int)reader["msgReadBy"];
                        c.isFCMActive         = reader["isFCMActive"].ToString().Trim();
                        ServiceProviders.Add(c);
                        //}
                        // }

                        // } while (reader.Read() && sp.cServiceCategory.Equals(reader["cServiceType"].ToString().Trim()));
                    }
                }
            }
            catch (Exception ex)
            {
                retvalue = ex.Message.ToString();
            }
            //return Ok(retvalue);*/
            try
            {
                string constr = ConfigurationManager.ConnectionStrings["MyAbDbContext"].ConnectionString;

                using (SqlConnection con = new SqlConnection(constr))
                {
                    SqlCommand cmd = new SqlCommand("sp_getPostcode", con);
                    cmd.CommandType = CommandType.StoredProcedure;


                    SqlParameter paramuserType = new SqlParameter();
                    paramuserType.ParameterName = "@userType";
                    paramuserType.Value         = userType;
                    cmd.Parameters.Add(paramuserType);

                    SqlParameter paramuserid = new SqlParameter();
                    paramuserid.ParameterName = "@userID";
                    paramuserid.Value         = userid;
                    cmd.Parameters.Add(paramuserid);

                    cmd.Parameters.Add("@postcode", SqlDbType.NVarChar, 6);
                    cmd.Parameters["@postcode"].Direction = ParameterDirection.Output;

                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                    userPostcode = cmd.Parameters["@postcode"].Value.ToString();
                }
            }
            catch (Exception e)
            { }
            SendNotificationController s        = new SendNotificationController();
            cPostCodeDistance          distance = new cPostCodeDistance();

            foreach (cPartialSender snd in ServiceProviders)
            {
                if (!userPostcode.Equals(snd.postcode))
                {
                    distance = await s.GetCalculatedistanceAsync(userPostcode, snd.postcode);

                    if (distance.rows[0].elements[0].status.Contains("OK"))
                    {
                        snd.postcode       = distance.rows[0].elements[0].distance.text;             ////the value in KMS. eg 2,435 KM
                        snd.ReviewReceived = int.Parse(distance.rows[0].elements[0].distance.value); /// the value in meters. eg 2435675
                    }
                }
                else
                {
                    snd.postcode       = "LOCAL";
                    snd.ReviewReceived = 0;
                }
            }


            for (int i = 0; i < ServiceProviders.Count; i++)
            {
                for (int j = 0; j < ServiceProviders.Count; j++)
                {
                    cPartialSender swp = new cPartialSender();
                    if (ServiceProviders[i].ReviewReceived < ServiceProviders[j].ReviewReceived)
                    {
                        swp = ServiceProviders[j];
                        ServiceProviders[j] = ServiceProviders[i];
                        ServiceProviders[i] = swp;
                    }
                }
            }
            cServiceProvider spprov             = new cServiceProvider();

            spprov.providers        = ServiceProviders;
            spprov.cCount           = ServiceProviders.Count;
            spprov.cServiceCategory = "Results Found";
            spprov.cSvcDesc         = SEARCH;
            spCollctionlist.Add(spprov);
            //return ServiceProviders;
            CreateEnquiries(userid, userType, spCollctionlist);
            return(spCollctionlist);
        }