Beispiel #1
0
        public ActionResult Update(CRMLead crmLead)
        {
            ApiResult <CRMLead> apiResult;

            if (ModelState.IsValid)
            {
                if (crmLead.Id > 0)
                {
                    apiResult = TryExecute(() =>
                    {
                        _crmLeadRepository.Update(crmLead);
                        _unitOfWork.Commit();
                        return(crmLead);
                    }, "Lead updated sucessfully");
                }
                else
                {
                    apiResult = TryExecute(() =>
                    {
                        _crmLeadRepository.Create(crmLead);
                        _unitOfWork.Commit();
                        return(crmLead);
                    }, "Lead created sucessfully");
                }
            }
            else
            {
                apiResult = ApiResultFromModelErrors <CRMLead>();
            }

            return(Json(apiResult, JsonRequestBehavior.AllowGet));
        }
Beispiel #2
0
        //protected override void OnAppearing()
        //{
        //    base.OnAppearing();
        //    MessagingCenter.Subscribe<Dictionary<string,dynamic>, string>(vals, "NotifyMsg", (sender, arg) =>
        //    {
        //        string retarg = arg;
        //        List<CRMLead> crmLeadData = Controller.InstanceCreation().crmLeadData();
        //    });
        //}

        async void phoneClicked(object sender, EventArgs e1)
        {
            var args = (TappedEventArgs)e1;

            try
            {
                CRMLead myobj       = args.Parameter as CRMLead;
                var     phoneDialer = CrossMessaging.Current.PhoneDialer;
                if (phoneDialer.CanMakePhoneCall && myobj.phone != "")
                {
                    phoneDialer.MakePhoneCall(myobj.phone);
                }
                else
                {
                    await Navigation.PushPopupAsync(new PhoneWizard());
                }
            }
            catch
            {
                CRMLeadDB myobj       = args.Parameter as CRMLeadDB;
                var       phoneDialer = CrossMessaging.Current.PhoneDialer;
                if (phoneDialer.CanMakePhoneCall && myobj.phone != "")
                {
                    phoneDialer.MakePhoneCall(myobj.phone);
                }
                else
                {
                    await Navigation.PushPopupAsync(new PhoneWizard());
                }
            }
        }
Beispiel #3
0
        public ActionResult Create(NewCRMLeadViewModel vm)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var newCRMLead = new CRMLead
                    {
                        AssignedToUserId = vm.AssignedToUserId,
                        LeadSourceId     = vm.LeadSourceId,
                        CategoryId       = vm.CategoryId,
                        LeadStatusId     = vm.LeadStatusId,
                        Person           = vm.Person,
                        Expertise        = vm.Expertise,
                        Description      = vm.Description,
                        RecievedOn       = vm.RecievedOn,
                        CreatedByUserId  = WebUser.Id
                    };

                    _crmLeadRepository.Create(newCRMLead);
                    _unitOfWork.Commit();

                    // Map the Technologies
                    if (vm.TechnologyIds != null)
                    {
                        foreach (var technologyId in vm.TechnologyIds)
                        {
                            var newMap = new CRMLeadTechnologyMap
                            {
                                LeadId       = newCRMLead.Id,
                                TechnologyId = technologyId
                            };

                            _crmLeadTechnologyMapRepository.Create(newMap);
                        }

                        _unitOfWork.Commit();
                    }

                    return(RedirectToAction("Index"));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                }
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Please fill all mandatory fields");
            }

            return(View(vm));
        }
Beispiel #4
0
        private string GetCRMLeadDetails(CRMLead crmLead)
        {
            var builder = new StringBuilder();

            builder.Append("<p>Already a Lead exists with the same details</p>");
            builder.Append($"<p>Name is: {crmLead.Person.Name}</p>");
            builder.Append($"<p>Email is: {crmLead.Person.Email}</p>");
            builder.Append($"<p>Secondary Email is: {crmLead.Person.SecondaryEmail}</p>");
            builder.Append($"<p>Phone No is: {crmLead.Person.PhoneNo}</p>");
            builder.Append($"<p>Office Phone No is: {crmLead.Person.OfficePhone}</p>");
            builder.Append($"<a target='_blank' href='/CRM/CRMLeads/Details/{crmLead.Id}'>View Details</a>");
            return(builder.ToString());
        }
Beispiel #5
0
        public ActionResult Create(LeadModel vm)
        {
            try
            {
                var newPerson = new Person
                {
                    Email     = vm.Email,
                    PhoneNo   = vm.Phone,
                    Country   = vm.Country,
                    FirstName = !string.IsNullOrEmpty(vm.FirstName) ? vm.FirstName : "Unknown",
                    LastName  = !string.IsNullOrEmpty(vm.LastName) ? vm.LastName : "Unknown"
                };

                _personRepository.Create(newPerson);

                var newCRMLead = new CRMLead
                {
                    Description      = vm.Message,
                    AssignedToUserId = vm.CreatedByUserId,
                    LeadSourceId     = vm.LeadSourceId,
                    CategoryId       = vm.CategoryId,
                    LeadStatusId     = vm.StatusId,
                    PersonId         = newPerson.Id,
                    RecievedOn       = DateTime.UtcNow,
                    CreatedByUserId  = vm.CreatedByUserId
                };

                _crmLeadRepository.Create(newCRMLead);
                _unitOfWork.Commit();

                var result = new ApiResult <bool>
                {
                    Status  = true,
                    Message = "Success"
                };

                return(Json(result));
            }
            catch (Exception ex)
            {
                var result = new ApiResult <bool>
                {
                    Status  = false,
                    Message = ex.Message
                };

                return(Json(result));
            }
        }
Beispiel #6
0
        public CrmLeadDetailWizard(CRMLead modelObj, string page)
        {
            InitializeComponent();

            obj = modelObj;
            CustomerNameValue.Text       = modelObj.name;
            CrmNameValue.Text            = modelObj.customer;
            ExpectedRevenueValue.Text    = modelObj.expected_revenue + "$";
            ProbabilityValue.Text        = modelObj.probability + "%";
            EmailValue.Text              = modelObj.email;
            PhoneValue.Text              = modelObj.phone;
            TeamValue.Text               = modelObj.team_name;
            NextActivityValue.Text       = modelObj.next_activity;
            NextActivityDateValue.Text   = modelObj.next_activity;
            ActivityDescritionValue.Text = modelObj.title_action;
            expectedClosingValue.Text    = "";
            StreetValue.Text             = modelObj.street;
            Street2Value.Text            = modelObj.street2;
            CityValue.Text               = modelObj.city;
            CountryValue.Text            = modelObj.country;
            ContactNameValue.Text        = modelObj.contact_name;
            ContactMobileValue.Text      = modelObj.mobile;
            int priorityCnt = Convert.ToInt32(modelObj.priority);

            if (page == "Lead")
            {
                btnStack.IsVisible   = false;
                Convertbtn.IsVisible = true;
            }

            if (priorityCnt == 3)
            {
                RatingLayout3.IsVisible = true;
            }
            else if (priorityCnt == 2)
            {
                RatingLayout2.IsVisible = true;
            }
            else if (priorityCnt == 1)
            {
                RatingLayout1.IsVisible = true;
            }
            else
            {
            }
        }
Beispiel #7
0
        private void crmLeadListView_ItemTapped(object sender, ItemTappedEventArgs ea)
        {
            //if (App.NetAvailable == true && App.crmList.Count != App.crmListDb.Count && App.crmListDb.Count != 0)
            //{
            //    CRMLeadDB masterItemObj = (CRMLeadDB)ea.Item;
            //    Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
            //}

            //else if (App.NetAvailable == true && App.crmList.Count == App.crmListDb.Count)
            //{
            //    CRMLeadDB masterItemObj = (CRMLeadDB)ea.Item;
            //    Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
            //}

            //else if(App.NetAvailable == true && App.crmList.Count > App.crmListDb.Count)
            //{
            //    CRMLead masterItemObj = (CRMLead)ea.Item;
            //    Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
            //}

            //else if(App.NetAvailable == false)
            //{
            //    CRMLeadDB masterItemObj = (CRMLeadDB)ea.Item;
            //    Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
            //}


            //  List<CRMLead> crmLeadData = Controller.InstanceCreation().crmLeadData();



            //CRMLead masterItemObj = (CRMLead)ea.Item;
            //Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));

            if (App.NetAvailable == true)
            {
                crmLeadListView.ItemsSource = App.crmList;

                var result1 = from y in App.crmListDb
                              where y.yellowimg_string == "yellowcircle.png"
                              select y;

                if (result1.Count() == 0)
                {
                    try
                    {
                        CRMLead masterItemObj = (CRMLead)ea.Item;
                        Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
                    }

                    catch
                    {
                        CRMLeadDB masterItemObj = (CRMLeadDB)ea.Item;
                        Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
                    }
                }

                else
                {
                    try
                    {
                        CRMLeadDB masterItemObj = (CRMLeadDB)ea.Item;
                        Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
                    }
                    catch {
                        CRMLead masterItemObj = (CRMLead)ea.Item;
                        Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
                    }
                }
            }


            else if (App.NetAvailable == false)
            {
                try
                {
                    CRMLeadDB masterItemObj = (CRMLeadDB)ea.Item;
                    Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
                }

                catch
                {
                    CRMLead masterItemObj = (CRMLead)ea.Item;
                    Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
                }
            }
        }
Beispiel #8
0
        async void phoneClicked(object sender, EventArgs e1)
        {
            var args = (TappedEventArgs)e1;


            try
            {
                CRMLead myobj = args.Parameter as CRMLead;

                var phoneDialer = CrossMessaging.Current.PhoneDialer;
                if (phoneDialer.CanMakePhoneCall && myobj.phone != "")
                {
                    start_record = true;


                    await DisplayAlert("Alert", "Your call will be recorded", "Ok");

                    DependencyService.Get <IPhoneCall>().makecall(myobj.phone);

                    //  await   recorder.StopRecordingOnSilence = false;


                    await Task.Delay(5000);

                    //  Thread.Sleep(10000);
                    DependencyService.Get <IAudioRecorder>().StartRecording();


                    //  var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

                    var res = await DisplayAlert("Alert", "Save the record?", "Ok", "Cancel");

                    if (res)
                    {
                        //  await recorder.StopRecording();

                        //stopWatch.Stop();

                        //await recorder.StopRecording();
                        //// Get the elapsed time as a TimeSpan value.
                        //TimeSpan ts = stopWatch.Elapsed;


                        //try
                        //{
                        //    var filePath = recorder.GetAudioFilePath();

                        //    if (filePath != null)
                        //    {
                        //       // PlayButton.IsEnabled = false;
                        //       // RecordButton.IsEnabled = false;

                        //        player.Play(filePath);
                        //    }
                        //}
                        //catch (Exception ex)
                        //{
                        //    //blow up the app!
                        //    throw ex;
                        //}

                        DependencyService.Get <IAudioRecorder>().StopRecording();

                        var currentpage = new LoadingAlert();
                        await PopupNavigation.PushAsync(currentpage);


                        Dictionary <string, dynamic> vals = new Dictionary <string, dynamic>();

                        //string UploadData = DependencyService.Get<IAudioRecorder>().RecordAudio();

                        string UploadData = DependencyService.Get <IAudioRecorder>().OutputString();

                        vals["res_model"]   = "crm.lead";
                        vals["res_id"]      = myobj.id;
                        vals["name"]        = "test.3gp";
                        vals["datas"]       = UploadData;
                        vals["datas_fname"] = "test.3gp";

                        var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

                        DependencyService.Get <IAudioRecorder>().PlayRecording();

                        //  var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

                        await DisplayAlert("Alert", "Record updated successfully", "Ok");

                        await PopupNavigation.PopAsync();
                    }
                    else
                    {
                        // await DisplayAlert("Alert", "Try Again", "Ok");
                        //  await PopupNavigation.PopAsync();
                    }
                }
                else
                {
                    start_record = false;
                    await Navigation.PushPopupAsync(new PhoneWizard());
                }
            }
            catch
            {
                CRMLeadDB myobj       = args.Parameter as CRMLeadDB;
                var       phoneDialer = CrossMessaging.Current.PhoneDialer;
                if (phoneDialer.CanMakePhoneCall && myobj.phone != "")
                {
                    phoneDialer.MakePhoneCall(myobj.phone);
                }
                else
                {
                    await Navigation.PushPopupAsync(new PhoneWizard());
                }
            }
        }
Beispiel #9
0
        public CrmLeadDetailWizard(CRMLead modelObj, string page)
        {
            InitializeComponent();

            obj = modelObj;
            CustomerNameValue.Text    = modelObj.customer;
            CrmNameValue.Text         = modelObj.name;
            ExpectedRevenueValue.Text = modelObj.expected_revenue + "$";
            ProbabilityValue.Text     = modelObj.probability + "%";
            EmailValue.Text           = modelObj.email;
            PhoneValue.Text           = modelObj.phone;
            TeamValue.Text            = modelObj.team_name;
            ContactNameValue.Text     = modelObj.contact_name;
            SalesPersonValue.Text     = modelObj.sales_person;
            NextActValue.Text         = modelObj.next_activity;
            expectedClosingValue.Text = modelObj.expected_closing;
            // SalesPersonValue.Text = modelObj.
            //  SalesPersonValue.Text = modelObj.next_activity;
            // NextActivityDateValue.Text = modelObj.next_activity;
            //ActivityDescritionValue.Text = modelObj.title_action;
            //  expectedClosingValue.Text = "";
            //StreetValue.Text = modelObj.street;
            //Street2Value.Text = modelObj.street2;
            //CityValue.Text = modelObj.city;
            //CountryValue.Text = modelObj.country;
            //ContactNameValue.Text = modelObj.contact_name;
            //ContactMobileValue.Text = modelObj.mobile;

            crm_lead_id = obj.id;
            int priorityCnt = Convert.ToInt32(modelObj.priority);

            if (page == "Lead")
            {
                // btnStack.IsVisible = false;
                Convertbtn.IsVisible = true;
            }

            if (priorityCnt == 3)
            {
                RatingLayout3.IsVisible = true;
            }
            else if (priorityCnt == 2)
            {
                RatingLayout2.IsVisible = true;
            }
            else if (priorityCnt == 1)
            {
                RatingLayout1.IsVisible = true;
            }
            else
            {
            }

            var lead_editbtnRecognizer = new TapGestureRecognizer();

            lead_editbtnRecognizer.Tapped += (s, e) =>
            {
                updateStackLayout.IsVisible = true;
                lead_editbtn.IsVisible      = false;

                crm_name_layout.IsVisible = true;
                CrmNameValue.IsVisible    = false;
                crm_name_entry.Text       = CrmNameValue.Text;

                ex_rev_entry.IsVisible         = true;
                ex_rev_entry.Text              = obj.expected_revenue;
                ExpectedRevenueValue.IsVisible = false;

                prob_entry.IsVisible       = true;
                prob_entry.Text            = obj.probability.ToString();
                ProbabilityValue.IsVisible = false;


                contactname_entry.IsVisible = true;
                contactname_entry.Text      = ContactNameValue.Text;
                ContactNameValue.IsVisible  = false;

                sales_person_picker.IsVisible     = true;
                sales_person_picker.ItemsSource   = App.salespersons.Select(x => x.Value).ToList();
                sales_person_picker.SelectedIndex = 0;
                sales_person_picker.SelectedItem  = SalesPersonValue.Text;
                SalesPersonValue.IsVisible        = false;

                cus_picker.IsVisible        = true;
                cus_picker.ItemsSource      = App.cusdict.Select(x => x.Value).ToList();
                cus_picker.SelectedIndex    = 0;
                cus_picker.SelectedItem     = CustomerNameValue.Text;
                CustomerNameValue.IsVisible = false;

                nextact_picker.IsVisible    = true;
                nextact_picker.ItemsSource  = App.nextActivityList.Select(x => x.name).ToList();
                nextact_picker.SelectedItem = NextActValue.Text;
                NextActValue.IsVisible      = false;

                expe_closing_picker.IsVisible = true;

                try
                {
                    DateTime expclosingDate = DateTime.ParseExact(modelObj.expected_closing, "yyyy-MM-dd", null);
                    expectedClosingValue.IsVisible = false;
                    expe_closing_picker.Date       = expclosingDate;
                }

                catch
                {
                    expectedClosingValue.IsVisible = false;
                    expe_closing_picker.Date       = DateTime.Today;
                }
                // expe_closing_picker.ItemsSource = App.nextActivityList.Select(x => x.name).ToList();

                NextActValue.IsVisible = false;

                email_entry.IsVisible = true;
                email_entry.Text      = EmailValue.Text;
                EmailValue.IsVisible  = false;

                phone_entry.IsVisible = true;
                phone_entry.Text      = PhoneValue.Text;
                PhoneValue.IsVisible  = false;

                team_picker.IsVisible     = true;
                team_picker.ItemsSource   = App.salesteam.Select(x => x.Value).ToList();
                team_picker.SelectedIndex = 0;
                team_picker.SelectedItem  = TeamValue.Text;
                TeamValue.IsVisible       = false;



                RatingLayout3.IsVisible = false;
                RatingLayout2.IsVisible = false;
                RatingLayout1.IsVisible = false;

                emptyRatingLayout3.IsVisible = true;
            };
            lead_editbtn.GestureRecognizers.Add(lead_editbtnRecognizer);



            var empstar1Recognizer = new TapGestureRecognizer();

            empstar1Recognizer.Tapped += (s, e) => {
                str1.IsVisible = true;
                em1.IsVisible  = false;
                str2.IsVisible = false;
                str3.IsVisible = false;
                em2.IsVisible  = true;
                em3.IsVisible  = true;

                count = "1";
            };
            em1.GestureRecognizers.Add(empstar1Recognizer);

            var empstar2Recognizer = new TapGestureRecognizer();

            empstar2Recognizer.Tapped += (s, e) => {
                str1.IsVisible = true;
                str2.IsVisible = true;
                em2.IsVisible  = false;
                em1.IsVisible  = false;
                str3.IsVisible = false;
                em3.IsVisible  = true;
                count          = "2";
            };
            em2.GestureRecognizers.Add(empstar2Recognizer);

            var empstar3Recognizer = new TapGestureRecognizer();

            empstar3Recognizer.Tapped += (s, e) => {
                str1.IsVisible = true;
                str2.IsVisible = true;
                str3.IsVisible = true;
                em3.IsVisible  = false;
                em2.IsVisible  = false;
                em1.IsVisible  = false;
                count          = "3";
            };
            em3.GestureRecognizers.Add(empstar3Recognizer);

            var str1Recognizer = new TapGestureRecognizer();

            str1Recognizer.Tapped += (s, e) => {
                str1.IsVisible = true;
                em2.IsVisible  = true;
                em3.IsVisible  = true;
                str2.IsVisible = false;
                str3.IsVisible = false;

                count = "1";
            };
            str1.GestureRecognizers.Add(str1Recognizer);

            var str2Recognizer = new TapGestureRecognizer();

            str2Recognizer.Tapped += (s, e) => {
                str1.IsVisible = true;
                str2.IsVisible = true;
                str3.IsVisible = false;
                em1.IsVisible  = false;
                em2.IsVisible  = false;
                em3.IsVisible  = true;

                count = "2";
            };
            str2.GestureRecognizers.Add(str2Recognizer);

            var str3Recognizer = new TapGestureRecognizer();

            str3Recognizer.Tapped += (s, e) => {
                str1.IsVisible = true;
                str2.IsVisible = true;
                str3.IsVisible = false;
                em1.IsVisible  = false;
                em2.IsVisible  = false;
                em3.IsVisible  = true;

                count = "3";
            };
            str3.GestureRecognizers.Add(str3Recognizer);
        }
Beispiel #10
0
        private void crmLeadListView_ItemTapped(object sender, ItemTappedEventArgs ea)
        {
            CRMLead masterItemObj = (CRMLead)ea.Item;

            Navigation.PushPopupAsync(new CrmLeadDetailWizard(masterItemObj, "Lead"));
        }
Beispiel #11
0
        async void phoneClicked(object sender, EventArgs e1)
        {
            var args = (TappedEventArgs)e1;

            //try
            //{
            //    CRMLead myobj = args.Parameter as CRMLead;

            //    var phoneDialer = CrossMessaging.Current.PhoneDialer;
            //    if (phoneDialer.CanMakePhoneCall && myobj.phone != "")
            //    {
            //        start_record = true;

            //        //   DependencyService.Get<IPhoneCall>().makecall("12345");

            //        // phoneDialer.MakePhoneCall(myobj.phone);

            //        await DisplayAlert("Alert", "Your call will be recorded", "Ok");

            //        DependencyService.Get<IPhoneCall>().makecall(myobj.phone);

            //      //  await   recorder.StopRecordingOnSilence = false;


            //        await RecordAudio();


            //        stopWatch.Start();


            //      //  var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

            //        var res =   await DisplayAlert("Alert", "Save the record?","Ok","Cancel");

            //        if (res)
            //        {

            //          //  await recorder.StopRecording();

            //           stopWatch.Stop();

            //            await recorder.StopRecording();
            //            // Get the elapsed time as a TimeSpan value.
            //            TimeSpan ts = stopWatch.Elapsed;

            //            // Format and display the TimeSpan value.
            //            //string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            //                //ts.Hours, ts.Minutes, ts.Seconds,
            //                //ts.Milliseconds / 10);


            //            var currentpage = new LoadingAlert();
            //            await PopupNavigation.PushAsync(currentpage);

            //            //  TimeSpan duration = new TimeSpan(0, 1, 0, 0);
            //            //  recorder.
            //            recorder.TotalAudioTimeout = ts;

            //         //   var filePath = recorder.GetAudioFilePath();


            //            Dictionary<string, dynamic> vals = new Dictionary<string, dynamic>();

            //            var stream = recorder.GetAudioFileStream();



            //            String UploadData = "";

            //            using (MemoryStream ms = new MemoryStream())
            //            {
            //                stream.CopyTo(ms);
            //                 ms.ToArray();


            //               // String UploadData = Convert.ToBase64String(ms.ToArray());
            //                 UploadData = Convert.ToBase64String(ms.ToArray());

            //                vals["res_model"] = "crm.lead";
            //                vals["res_id"] = myobj.id;
            //                vals["name"] = "test.wav";
            //                vals["datas"] = UploadData;
            //                vals["datas_fname"] = "test.wav";
            //            }


            //            var bytes = Encoding.Unicode.GetBytes(UploadData);
            //            using (var msi = new MemoryStream(bytes))
            //            using (var mso = new MemoryStream())
            //            {
            //                using (var gs = new GZipStream(mso, CompressionMode.Compress))
            //                {
            //                    msi.CopyTo(gs);
            //                }
            //                String fin_str = Convert.ToBase64String(mso.ToArray());
            //            }



            //           var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

            //            Dictionary<string, dynamic> valslog = new Dictionary<string, dynamic>();

            //            valslog["name"] = myobj.phone;
            //            valslog["partner_id"] = App.partner_id;
            //            valslog["user_id"] = App.userid;
            //            valslog["date"] = DateTime.Now.ToString("yyyy-MM-dd hh:mm");
            //            valslog["opportunity_id"] = myobj.id;
            //            valslog["partner_phone"] = "";


            //           // var res2 = Controller.InstanceCreation().UpdateLeadCreationData("crm.phonecal", "create", valslog);

            //            await DisplayAlert("Alert", "Record updated successfully", "Ok");

            //            await PopupNavigation.PopAsync();



            //        }
            //        else
            //        {
            //            // await DisplayAlert("Alert", "Try Again", "Ok");
            //          //  await PopupNavigation.PopAsync();
            //        }

            //    }
            //    else
            //    {
            //        start_record = false;
            //        await Navigation.PushPopupAsync(new PhoneWizard());
            //    }


            //}


            try
            {
                CRMLead myobj = args.Parameter as CRMLead;

                var phoneDialer = CrossMessaging.Current.PhoneDialer;
                if (phoneDialer.CanMakePhoneCall && myobj.phone != "")
                {
                    await DisplayAlert("Alert", "Your call will be recorded", "Ok");

                    DependencyService.Get <IPhoneCall>().makecall(myobj.phone);


                    await Task.Delay(5000);

                    //  Thread.Sleep(10000);
                    DependencyService.Get <IAudioRecorder>().StartRecording();

                    stopWatch.Start();

                    //  var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

                    var res = await DisplayAlert("Alert", "Save the record?", "Ok", "Cancel");

                    if (res)
                    {
                        stopWatch.Stop();

                        // await recorder.StopRecording();
                        // Get the elapsed time as a TimeSpan value.
                        TimeSpan ts = stopWatch.Elapsed;

                        // Format and display the TimeSpan value.
                        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}",
                                                           ts.Hours, ts.Minutes, ts.Seconds);


                        DependencyService.Get <IAudioRecorder>().StopRecording();

                        var currentpage = new LoadingAlert();
                        await PopupNavigation.PushAsync(currentpage);


                        Dictionary <string, dynamic> vals = new Dictionary <string, dynamic>();

                        //string UploadData = DependencyService.Get<IAudioRecorder>().RecordAudio();

                        string UploadData = DependencyService.Get <IAudioRecorder>().OutputString();

                        vals["res_model"] = "crm.lead";
                        vals["res_id"]    = myobj.id;
                        // vals["name"] = "test.3gp";
                        vals["name"] = myobj.name + " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm");

                        vals["datas"]       = UploadData;
                        vals["datas_fname"] = "test.3gp";

                        var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

                        Dictionary <string, dynamic> valslog = new Dictionary <string, dynamic>();

                        valslog["partner_phone"]  = myobj.phone;
                        valslog["partner_id"]     = App.partner_id;
                        valslog["user_id"]        = App.userid;
                        valslog["date"]           = DateTime.Now.ToString("yyyy-MM-dd hh:mm");
                        valslog["opportunity_id"] = myobj.id;
                        valslog["name"]           = "Call Discuss";
                        valslog["state"]          = "done";
                        valslog["duration"]       = ts.Minutes + "." + ts.Seconds;

                        var res2 = Controller.InstanceCreation().UpdateLeadCreationData("crm.phonecall", "create", valslog);

                        //   DependencyService.Get<IAudioRecorder>().PlayRecording();

                        //  var res1 = Controller.InstanceCreation().UpdateLeadCreationData("ir.attachment", "create", vals);

                        await DisplayAlert("Alert", "Record updated successfully", "Ok");

                        await PopupNavigation.PopAsync();
                    }
                    else
                    {
                        await PopupNavigation.PopAsync();

                        // await DisplayAlert("Alert", "Try Again", "Ok");
                        //  await PopupNavigation.PopAsync();
                    }
                }
                else
                {
                    start_record = false;
                    await Navigation.PushPopupAsync(new PhoneWizard());
                }
            }

            catch
            {
                CRMLeadDB myobj       = args.Parameter as CRMLeadDB;
                var       phoneDialer = CrossMessaging.Current.PhoneDialer;
                if (phoneDialer.CanMakePhoneCall && myobj.phone != "")
                {
                    phoneDialer.MakePhoneCall(myobj.phone);
                }
                else
                {
                    await Navigation.PushPopupAsync(new PhoneWizard());
                }
            }
        }