private void CreateCardProcess()
        {
            InvokeInBackground(async() =>
            {
                #region uploading photos
                bool photos_exist   = true;
                var documents       = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                var cards_cache_dir = Path.Combine(documents, Constants.CardsPersonalImages);
                if (!Directory.Exists(cards_cache_dir))
                {
                    photos_exist = false;
                }
                else
                {
                    photos_exist       = false;
                    string[] filenames = Directory.GetFiles(cards_cache_dir);
                    foreach (var img in filenames)
                    {
                        photos_exist = true;
                        break;
                    }
                }
                var documentsLogo  = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                var logo_cache_dir = Path.Combine(documentsLogo, Constants.CardsLogo);
                if (Directory.Exists(logo_cache_dir))
                {
                    string[] filenames = Directory.GetFiles(logo_cache_dir);
                    foreach (var img in filenames)
                    {
                        photos_exist = true;
                        break;
                    }
                }
                int?logo_id = null;
                List <int> attachments_ids_list = new List <int>();
                if (photos_exist)
                {
                    InvokeOnMainThread(() =>
                    {
                        mainTextTV.Text = "Фотографии выгружаются";
                    });
                    AttachmentsUploadModel res_photos = null;
                    try
                    {
                        res_photos = await attachments.UploadIOS(databaseMethods.GetAccessJwt(), UDID);
                    }
                    catch
                    {
                        if (!methods.IsConnected())
                        {
                            InvokeOnMainThread(() =>
                            {
                                NoConnectionViewController.view_controller_name = GetType().Name;
                                this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                                return;
                            });
                        }
                        return;
                    }
                    if (res_photos != null)
                    {
                        //var deserialized_logo = JsonConvert.DeserializeObject<CompanyLogoModel>(res_photos);
                        logo_id = res_photos.logo_id;
                        attachments_ids_list = res_photos.attachments_ids;
                        if (logo_id == Constants.image_upload_status_code401)
                        {
                            InvokeOnMainThread(() =>
                            {
                                ShowSeveralDevicesRestriction();
                                return;
                            });
                            return;
                        }
                    }
                }
                #endregion uploading photos
                InvokeOnMainThread(() =>
                {
                    mainTextTV.Text = "Визитка синхронизируется";
                });
                string company_card_res = "";
                if (!CompanyDataViewControllerNew.company_null)
                {
                    try
                    {
                        if (logo_id != null)
                        {
                            company_card_res = await companies.CreateCompanyCard(databaseMethods.GetAccessJwt(), UDID, databaseMethods.GetDataFromCompanyCard(), logo_id);
                        }
                        else
                        {
                            company_card_res = await companies.CreateCompanyCard(databaseMethods.GetAccessJwt(), UDID, databaseMethods.GetDataFromCompanyCard());
                        }
                        if (company_card_res == Constants.image_upload_status_code401.ToString())
                        {
                            InvokeOnMainThread(() =>
                            {
                                ShowSeveralDevicesRestriction();
                                return;
                            });
                            return;
                        }
                    }
                    catch
                    {
                        if (!methods.IsConnected())
                        {
                            InvokeOnMainThread(() =>
                            {
                                NoConnectionViewController.view_controller_name = GetType().Name;
                                this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                                return;
                            });
                        }
                        return;
                    }
                }
                try
                {
                    string user_card_res;
                    if (!CompanyDataViewControllerNew.company_null)
                    {
                        var deserialized = JsonConvert.DeserializeObject <CompanyCardResponse>(company_card_res);
                        try
                        {
                            user_card_res = await cards.CreatePersonalCard(databaseMethods.GetAccessJwt(),
                                                                           databaseMethods.GetDataFromUsersCard(deserialized.id,
                                                                                                                databaseMethods.GetLastSubscription(),
                                                                                                                EditCompanyDataViewControllerNew.position,
                                                                                                                EditCompanyDataViewControllerNew.corporativePhone),
                                                                           attachments_ids_list,
                                                                           UDID);
                        }
                        catch
                        {
                            if (!methods.IsConnected())
                            {
                                InvokeOnMainThread(() =>
                                {
                                    NoConnectionViewController.view_controller_name = GetType().Name;
                                    this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                                    return;
                                });
                            }
                            return;
                        }
                    }
                    else
                    {
                        try
                        {
                            user_card_res = await cards.CreatePersonalCard(databaseMethods.GetAccessJwt(),
                                                                           databaseMethods.GetDataFromUsersCard(null,
                                                                                                                databaseMethods.GetLastSubscription(),
                                                                                                                EditCompanyDataViewControllerNew.position,
                                                                                                                EditCompanyDataViewControllerNew.corporativePhone),
                                                                           attachments_ids_list,
                                                                           UDID);
                        }
                        catch
                        {
                            if (!methods.IsConnected())
                            {
                                InvokeOnMainThread(() =>
                                {
                                    NoConnectionViewController.view_controller_name = GetType().Name;
                                    this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                                    return;
                                });
                            }
                            return;
                        }
                    }
                    if (user_card_res == Constants.image_upload_status_code401.ToString())
                    {
                        InvokeOnMainThread(() =>
                        {
                            ShowSeveralDevicesRestriction();
                            return;
                        });
                        return;
                    }
                    try
                    {
                        var users_card_des = JsonConvert.DeserializeObject <CompanyCardResponse>(user_card_res);
                        personal_card_id   = users_card_des.id;
                        QRViewController.just_created_card_name = databaseMethods.get_card_name();
                        clearAll();

                        CardDoneViewController.card_id = personal_card_id;
                        InvokeOnMainThread(() =>
                        {
                            //CardDoneViewController.variant_displaying = 1;

                            databaseMethods.InsertLastCloudSync(DateTime.Now);
                            this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(CardDoneViewController)), true);
                        });
                    }
                    catch
                    {
                        InvokeOnMainThread(() =>
                        {
                            var deserialized_error = JsonConvert.DeserializeObject <List <CreateCompanyErrorModel> >(user_card_res);
                            //if (deserialized_error[0].message == Constants.alreadyDone)
                            UIAlertView alert = new UIAlertView()
                            {
                                Title   = "Ошибка",
                                Message = deserialized_error[0].message
                            };
                            if (deserialized_error[0].code == Constants.alreadyDone)
                            {
                                alert.Message = "Визитка с таким названием существует. ";
                            }
                            alert.AddButton("OK");
                            alert.Show();
                            pop();
                        });
                    }
                }
                catch
                {
                    InvokeOnMainThread(() =>
                    {
                        var deserialized_error = JsonConvert.DeserializeObject <List <CreateCompanyErrorModel> >(company_card_res);
                        if (deserialized_error != null)
                        {
                            UIAlertView alert = new UIAlertView()
                            {
                                Title   = "Ошибка",
                                Message = deserialized_error[0].message
                            };
                            alert.AddButton("OK");
                            alert.Show();
                            pop();
                        }
                        else
                        {
                            this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(CardDoneViewController)), true);
                        }
                    });
                }
            });
        }
Beispiel #2
0
        public async Task <AttachmentsUploadModel> UploadAndroid(string accessJwt, string udid, List <byte[]> imagesBytesList = null, byte[] logoBytes = null)
        {
            using (HttpClient client = new HttpClient())
            {
                var resultObj = new AttachmentsUploadModel();
                //client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MzgwNzI0MjgsIkFjY291bnRDbGllbnRUb2tlbiI6IjVLOU1lbzNKbDNOIiwiQWNjb3VudElEIjoxODIsIkNsaWVudElEIjoiMTMzODAyMUMtRjREMi00N0JDLUFFRTktRDBGMzgxMjY0NDQyIiwiaXNzIjoibXlxcmNhcmRzLmNvbSIsImF1ZCI6ImRldi1hcGkubXlxcmNhcmRzLmNvbSJ9.Lses2r92WN2qNBss_TakK86EcKjO1f8YGTws3zNSXZw");
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessJwt);
                client.DefaultRequestHeaders.Add(Constants.XClientIdentifier, udid);
                string result = null;
                #region logo upload
                //var documentsLogo = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                //var logo_cache_dir = Path.Combine(documentsLogo, Constants.CardsLogo);
                if (logoBytes != null)//Directory.Exists(logo_cache_dir))
                {
                    //string[] filenames_logo = Directory.GetFiles(logo_cache_dir);
                    //foreach (var img in filenames_logo)
                    //{
                    //byte[] b = File.ReadAllBytes(img);
                    //var imageContent = new ByteArrayContent(b, 0, b.Length);
                    var imageContent = new ByteArrayContent(logoBytes, 0, logoBytes.Length);
                    //NEEDS TO BE PNG HERE BECAUSE ITS BETTER THEN JPEG IN RESULT
                    imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
                    MultipartFormDataContent formData = new MultipartFormDataContent();
                    //NEEDS TO BE PNG HERE BECAUSE ITS BETTER THEN JPEG IN RESULT
                    formData.Add(imageContent, "File", "image.jpeg");
                    var res = await client.PostAsync(main_url, formData);

                    if (res.StatusCode.ToString().ToLower().Contains(Constants.status_code401) || res.StatusCode.ToString().ToLower().Contains("401"))
                    {
                        return new AttachmentsUploadModel {
                                   logo_id = Constants.image_upload_status_code401
                        }
                    }
                    ;                                                                                          //means that we got 401
                    var contentResponse = await res.Content.ReadAsStringAsync();

                    result = contentResponse;
                    var logoId = JsonConvert.DeserializeObject <CompanyLogoModel>(result).id;
                    resultObj.logo_id = logoId;
                    //}
                }
                #endregion logo upload

                #region personal photos upload
                //var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                //var cards_cache_dir = Path.Combine(documents, Constants.CardsPersonalImages);
                //try
                //{
                //string[] filenames = Directory.GetFiles(cards_cache_dir);
                if (imagesBytesList != null)
                {
                    var idsTemp = new List <int>();
                    int i       = 0;
                    foreach (var img in imagesBytesList)
                    {
                        //byte[] b = File.ReadAllBytes(img);
                        var imageContent = new ByteArrayContent(imagesBytesList[i], 0, imagesBytesList[i].Length);

                        //NEEDS TO BE PNG HERE BECAUSE ITS BETTER THEN JPEG IN RESULT
                        imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
                        MultipartFormDataContent formData = new MultipartFormDataContent();
                        //NEEDS TO BE PNG HERE BECAUSE ITS BETTER THEN JPEG IN RESULT
                        formData.Add(imageContent, "File", "image.jpeg");
                        var res = await client.PostAsync(main_url, formData);

                        if (res.StatusCode.ToString().ToLower().Contains(Constants.status_code401) || res.StatusCode.ToString().ToLower().Contains("401"))
                        {
                            return new AttachmentsUploadModel {
                                       logo_id = Constants.image_upload_status_code401
                            }
                        }
                        ;                                                                                          //means that we got 401
                        var contentResponse = await res.Content.ReadAsStringAsync();

                        result = contentResponse;
                        var attachmentId = JsonConvert.DeserializeObject <CompanyLogoModel>(result).id;
                        idsTemp.Add(attachmentId);
                        i++;
                    }
                    resultObj.attachments_ids = idsTemp;
                }
                //catch { }
                #endregion personal photos upload
                return(resultObj);
            }
        }
    }
}
        protected override async void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            clientName = Android.OS.Build.Manufacturer + " " + Android.OS.Build.Model;
            SetContentView(Resource.Layout.LoadingLayout);
            InitElements();
            if (!_methods.IsConnected())
            {
                NoConnectionActivity.ActivityName = this;
                StartActivity(typeof(NoConnectionActivity));
                Finish();
                return;
            }

            #region uploading photos
            bool photosExist    = true;
            var  personalImages = await _nativeMethods.GetPersonalImages();

            if (personalImages == null)
            {
                photosExist = false;
            }
            else
            {
                photosExist = true;
            }
            var documentsLogo = await _nativeMethods.GetDocumentsLogo();

            if (documentsLogo != null)
            {
                photosExist = true;
            }
            int?       logoId             = null;
            List <int> attachmentsIdsList = new List <int>();
            if (photosExist)
            {
                _mainTextTv.Text = TranslationHelper.GetString("photosAreBeingUploaded", _ci);
                AttachmentsUploadModel resPhotos = null;
                try
                {
                    resPhotos = await _attachments.UploadAndroid(_databaseMethods.GetAccessJwt(), clientName, personalImages, documentsLogo);
                }
                catch (Exception ex)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return;
                    }
                }
                if (resPhotos == null)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return;
                    }
                }
                if (resPhotos != null)
                {
                    //var deserialized_logo = JsonConvert.DeserializeObject<CompanyLogoModel>(res_photos);
                    logoId             = resPhotos.logo_id;
                    attachmentsIdsList = resPhotos.attachments_ids;
                    if (logoId == Constants.image_upload_status_code401)
                    {
                        ShowSeveralDevicesRestriction();
                        return;
                    }
                }
            }
            _mainTextTv.Text = TranslationHelper.GetString("cardIsSynchronizing", _ci);
            #endregion uploading photos

            //var temp_ids = new List<int>();//EditActivity.ids_of_attachments;//.AddRange(attachments_ids_list);
            //temp_ids.AddRange(attachments_ids_list);
            HttpResponseMessage resUser = null;
            try
            {
                if (!EditPersonalDataActivity.IsPrimary && !FromPrimarySet)
                {
                    resUser = await _cards.CardUpdate(_databaseMethods.GetAccessJwt(),
                                                      EditActivity.CardId,
                                                      _databaseMethods.GetDataFromUsersCard(CompanyId, _databaseMethods.GetLastSubscription(), EditCompanyDataActivity.Position, EditCompanyDataActivity.CorporativePhone),
                                                      EditPersonalDataActivity.IsPrimary,
                                                      GetPersonalNetworks(),
                                                      //temp_ids);
                                                      attachmentsIdsList,
                                                      clientName);
                }
                else if (EditPersonalDataActivity.IsPrimary && FromPrimarySet)
                {
                    resUser = await _cards.CardUpdate(_databaseMethods.GetAccessJwt(),
                                                      EditActivity.CardId,
                                                      _databaseMethods.GetDataFromUsersCard(CompanyId, _databaseMethods.GetLastSubscription(), EditCompanyDataActivity.Position, EditCompanyDataActivity.CorporativePhone),
                                                      EditPersonalDataActivity.IsPrimary,
                                                      GetPersonalNetworks(),
                                                      //temp_ids);
                                                      //attachments_ids_list);
                                                      EditActivity.IdsOfAttachments,
                                                      clientName);

                    FromPrimarySet = false;
                }
                else
                {
                    resUser = await _cards.CardUpdate(_databaseMethods.GetAccessJwt(),
                                                      EditActivity.CardId,
                                                      _databaseMethods.GetDataFromUsersCard(CompanyId, _databaseMethods.GetLastSubscription(), EditCompanyDataActivity.Position, EditCompanyDataActivity.CorporativePhone),
                                                      EditPersonalDataActivity.IsPrimary,
                                                      GetPersonalNetworks(),
                                                      //temp_ids);
                                                      attachmentsIdsList,
                                                      clientName);
                }
                //EditActivity.ids_of_attachments);
            }
            catch (Exception ex)
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }
            }
            if (resUser == null)
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }
            }
            if (resUser.StatusCode.ToString().Contains("401") || resUser.StatusCode.ToString().ToLower().Contains(Constants.status_code401))
            {
                ShowSeveralDevicesRestriction();
                return;
            }

            await Clear();

            StartActivity(typeof(QrActivity));
        }
Beispiel #4
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            UDID = UIDevice.CurrentDevice.IdentifierForVendor.ToString();
            InitElements();
            if (!methods.IsConnected())
            {
                NoConnectionViewController.view_controller_name = GetType().Name;
                this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                return;
            }
            InvokeInBackground(async() =>
            {
                if (!EditCompanyDataViewControllerNew.changedCompanyData)
                {
                    goto DoPersonalStuff;
                }
                #region uploading photos
                bool photos_exist   = true;
                var documents       = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                var cards_cache_dir = Path.Combine(documents, Constants.CardsPersonalImages);
                if (!Directory.Exists(cards_cache_dir))
                {
                    photos_exist = false;
                }
                else
                {
                    photos_exist       = false;
                    string[] filenames = Directory.GetFiles(cards_cache_dir);
                    foreach (var img in filenames)
                    {
                        photos_exist = true;
                        break;
                    }
                }
                var documentsLogo  = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                var logo_cache_dir = Path.Combine(documentsLogo, Constants.CardsLogo);
                if (Directory.Exists(logo_cache_dir))
                {
                    string[] filenames = Directory.GetFiles(logo_cache_dir);
                    foreach (var img in filenames)
                    {
                        photos_exist = true;
                        break;
                    }
                }
                int?logo_id = null;
                if (photos_exist)
                {
                    InvokeOnMainThread(() =>
                    {
                        mainTextTV.Text = "Фотографии выгружаются";
                    });
                    AttachmentsUploadModel res_photos = null;
                    try
                    {
                        res_photos = await attachments.UploadIOS(databaseMethods.GetAccessJwt(), UDID);
                    }
                    catch
                    {
                        if (!methods.IsConnected())
                        {
                            InvokeOnMainThread(() =>
                            {
                                NoConnectionViewController.view_controller_name = GetType().Name;
                                this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                                return;
                            });
                        }
                        return;
                    }
                    if (res_photos != null)
                    {
                        //var deserialized_logo = JsonConvert.DeserializeObject<CompanyLogoModel>(res_photos);
                        //logo_id = deserialized_logo.id;
                        logo_id = res_photos.logo_id;
                        if (logo_id == Constants.image_upload_status_code401)
                        {
                            InvokeOnMainThread(() =>
                            {
                                ShowSeveralDevicesRestriction();
                                return;
                            });
                            return;
                        }
                    }
                }
                else
                {
                    logo_id = EditCompanyDataViewControllerNew.logo_id;
                }

                #endregion uploading photos
                InvokeOnMainThread(() =>
                {
                    mainTextTV.Text = "Визитка синхронизируется";
                });
                string res_company = null;
                try
                {
                    if (logo_id != null)
                    {
                        if (EditPersonalProcessViewController.company_id != null)
                        {
                            res_company = await companies.UpdateCompanyCard(databaseMethods.GetAccessJwt(), UDID, databaseMethods.GetDataFromCompanyCard(), EditPersonalProcessViewController.company_id, logo_id);
                        }
                        else
                        {
                            res_company = await companies.CreateCompanyCard(databaseMethods.GetAccessJwt(), UDID, databaseMethods.GetDataFromCompanyCard(), logo_id);
                        }
                    }
                    else
                    {
                        if (EditPersonalProcessViewController.company_id != null)
                        {
                            res_company = await companies.UpdateCompanyCard(databaseMethods.GetAccessJwt(), UDID, databaseMethods.GetDataFromCompanyCard(), EditPersonalProcessViewController.company_id);
                        }
                        else
                        {
                            res_company = await companies.CreateCompanyCard(databaseMethods.GetAccessJwt(), UDID, databaseMethods.GetDataFromCompanyCard());
                        }
                    }
                }
                catch
                {
                    if (!methods.IsConnected())
                    {
                        InvokeOnMainThread(() =>
                        {
                            NoConnectionViewController.view_controller_name = GetType().Name;
                            this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                            return;
                        });
                    }
                    return;
                }
                if (res_company == Constants.image_upload_status_code401.ToString())
                {
                    InvokeOnMainThread(() =>
                    {
                        ShowSeveralDevicesRestriction();
                        return;
                    });
                    return;
                }
                try
                {
                    var deserialized = JsonConvert.DeserializeObject <CompanyCardResponse>(res_company);
                }
                catch
                {
                    databaseMethods.ClearCompanyCardTable();
                    InvokeOnMainThread(() =>
                    {
                        var deserialized_error = JsonConvert.DeserializeObject <List <CreateCompanyErrorModel> >(res_company);
                        UIAlertView alert      = new UIAlertView()
                        {
                            Title   = "Ошибка в данных компании",
                            Message = deserialized_error[0].message
                        };
                        alert.AddButton("OK");
                        alert.Show();
                        this.NavigationController.PopViewController(true);
                    });
                }

                if (res_company.Contains("id") && res_company.Length < 12)
                {
                    EditPersonalProcessViewController.company_id = Convert.ToInt32(JsonConvert.DeserializeObject <CompanyCardResponse>(res_company).id);
                }
                DoPersonalStuff:
                //caching card to db
                databaseMethods.InsertUsersCard(
                    EditPersonalDataViewControllerNew.myName,
                    EditPersonalDataViewControllerNew.mySurname,
                    EditPersonalDataViewControllerNew.myMiddlename,
                    EditPersonalDataViewControllerNew.myPhone,
                    EditPersonalDataViewControllerNew.myEmail,
                    EditPersonalDataViewControllerNew.myHomePhone,
                    EditPersonalDataViewControllerNew.mySite,
                    EditPersonalDataViewControllerNew.myDegree,
                    EditPersonalDataViewControllerNew.myCardName,
                    EditPersonalDataViewControllerNew.myBirthDate,
                    HomeAddressViewController.myCountry,
                    HomeAddressViewController.myRegion,
                    HomeAddressViewController.myCity,
                    HomeAddressViewController.FullAddressStatic,
                    HomeAddressViewController.myIndex,
                    HomeAddressViewController.myNotation,
                    NewCardAddressMapViewController.lat,
                    NewCardAddressMapViewController.lng,
                    true
                    );
                System.Net.Http.HttpResponseMessage res = null;
                try
                {
                    res = await cards.CardUpdate(databaseMethods.GetAccessJwt(),
                                                 EditViewController.card_id,
                                                 databaseMethods.GetDataFromUsersCard(EditPersonalProcessViewController.company_id,
                                                                                      databaseMethods.GetLastSubscription(),
                                                                                      EditCompanyDataViewControllerNew.position, EditCompanyDataViewControllerNew.corporativePhone),
                                                 EditPersonalDataViewControllerNew.is_primary,
                                                 SocialNetworkTableViewSource <int, int> .socialNetworkListWithMyUrl,
                                                 EditViewController.ids_of_attachments,
                                                 UDID);
                }
                catch (Exception ex)
                {
                    if (!methods.IsConnected())
                    {
                        InvokeOnMainThread(() =>
                        {
                            NoConnectionViewController.view_controller_name = GetType().Name;
                            this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                            return;
                        });
                    }
                    return;
                }
                if (res.StatusCode.ToString().Contains("401") || res.StatusCode.ToString().ToLower().Contains(Constants.status_code401))
                {
                    InvokeOnMainThread(() =>
                    {
                        ShowSeveralDevicesRestriction();
                        return;
                    });
                    return;
                }

                InvokeOnMainThread(() =>
                {
                    ClearAll();

                    var vc = sb.InstantiateViewController(nameof(RootQRViewController));
                    try
                    {
                        this.NavigationController.PushViewController(vc, true);
                        //var vc_list = this.NavigationController.ViewControllers.ToList();
                        //try { vc_list.RemoveAt(vc_list.Count - 2); } catch { }
                        //this.NavigationController.ViewControllers = vc_list.ToArray();
                    }
                    catch { }
                });
            });
        }
        private async Task <bool> CreateCardProcess()
        {
            #region uploading photos
            bool photosExist    = true;
            var  personalImages = _nativeMethods.GetPersonalImages();
            if (personalImages.Result == null)
            {
                photosExist = false;
            }
            else
            {
                photosExist = true;
            }
            var documentsLogo = _nativeMethods.GetDocumentsLogo();
            if (documentsLogo.Result != null)
            {
                photosExist = true;
            }
            int?       logoId             = null;
            List <int> attachmentsIdsList = new List <int>();
            if (photosExist)
            {
                _mainTextTv.Text = TranslationHelper.GetString("photosAreBeingUploaded", _ci);
                AttachmentsUploadModel resPhotos = null;
                try
                {
                    resPhotos = await _attachments.UploadAndroid(_databaseMethods.GetAccessJwt(), clientName, personalImages.Result, documentsLogo.Result);
                }
                catch (Exception ex)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return(false);
                    }
                }
                if (resPhotos == null)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return(false);
                    }
                }

                if (resPhotos != null)
                {
                    //var deserialized_logo = JsonConvert.DeserializeObject<CompanyLogoModel>(res_photos);
                    logoId             = resPhotos.logo_id;
                    attachmentsIdsList = resPhotos.attachments_ids;
                    if (logoId == Constants.image_upload_status_code401)
                    {
                        ShowSeveralDevicesRestriction();
                        return(false);
                    }
                }
            }
            #endregion uploading photos
            _mainTextTv.Text = TranslationHelper.GetString("cardIsSynchronizing", _ci);
            string companyCardRes = "";
            if (!CompanyDataActivity.CompanyNull)
            {
                try
                {
                    if (logoId != null)
                    {
                        companyCardRes = await _companies.CreateCompanyCard(_databaseMethods.GetAccessJwt(), clientName, _databaseMethods.GetDataFromCompanyCard(), logoId);
                    }
                    else
                    {
                        companyCardRes = await _companies.CreateCompanyCard(_databaseMethods.GetAccessJwt(), clientName, _databaseMethods.GetDataFromCompanyCard());
                    }
                }
                catch (Exception ex)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return(false);
                    }
                }
                if (String.IsNullOrEmpty(companyCardRes))
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return(false);
                    }
                }
                if (companyCardRes == Constants.image_upload_status_code401.ToString())
                {
                    ShowSeveralDevicesRestriction();
                    return(false);
                }
            }
            try
            {
                string userCardRes = null;
                try
                {
                    if (!CompanyDataActivity.CompanyNull)
                    {
                        var deserialized = JsonConvert.DeserializeObject <CompanyCardResponse>(companyCardRes);
                        userCardRes = await _cards.CreatePersonalCard(_databaseMethods.GetAccessJwt(),
                                                                      _databaseMethods.GetDataFromUsersCard(deserialized.id,
                                                                                                            _databaseMethods.GetLastSubscription(),
                                                                                                            EditCompanyDataActivity.Position,
                                                                                                            EditCompanyDataActivity.CorporativePhone),
                                                                      attachmentsIdsList,
                                                                      clientName);
                    }
                    else
                    {
                        userCardRes = await _cards.CreatePersonalCard(_databaseMethods.GetAccessJwt(),
                                                                      _databaseMethods.GetDataFromUsersCard(null,
                                                                                                            _databaseMethods.GetLastSubscription(),
                                                                                                            EditCompanyDataActivity.Position,
                                                                                                            EditCompanyDataActivity.CorporativePhone),
                                                                      attachmentsIdsList,
                                                                      clientName);
                    }
                }
                catch (Exception ex)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return(false);
                    }
                }
                if (String.IsNullOrEmpty(userCardRes))
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return(false);
                    }
                }
                if (userCardRes == Constants.image_upload_status_code401.ToString())
                {
                    ShowSeveralDevicesRestriction();
                    return(false);
                }
                try
                {
                    var usersCardDes = JsonConvert.DeserializeObject <CompanyCardResponse>(userCardRes);
                    PersonalCardId = usersCardDes.id;
                    QrActivity.JustCreatedCardName = _databaseMethods.get_card_name();
                    _nativeMethods.ClearAll();

                    CardDoneActivity.CardId = PersonalCardId;
                    //CardDoneViewController.variant_displaying = 1;

                    _databaseMethods.InsertLastCloudSync(DateTime.Now);
                    ClearAll();
                    StartActivity(typeof(CardDoneActivity));
                }
                catch
                {
                    try
                    {
                        var deserializedError = JsonConvert.DeserializeObject <List <CreateCompanyErrorModel> >(userCardRes);
                        //if (deserialized_error[0].message == Constants.alreadyDone)
                        if (deserializedError[0].code == Constants.alreadyDone)
                        {
                            Toast.MakeText(this, TranslationHelper.GetString("cardWithThisNameExists", _ci), ToastLength.Long).Show();
                        }
                    }
                    catch { }
                    Pop();
                }
            }
            catch (Exception ex)
            {
                try
                {
                    var deserializedError = JsonConvert.DeserializeObject <List <CreateCompanyErrorModel> >(companyCardRes);
                    if (deserializedError != null)
                    {
                        Toast.MakeText(this, deserializedError[0].message, ToastLength.Long).Show();
                        Pop();
                    }
                    else
                    {
                        Toast.MakeText(this, TranslationHelper.GetString("tryOnceMore", _ci), ToastLength.Long).Show();
                        OnBackPressed();
                    }
                }
                catch { }
                //StartActivity(typeof(CardDoneActivity));
            }
            return(true);
        }
Beispiel #6
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            NavigationController.InteractivePopGestureRecognizer.Delegate = null;

            UDID = UIDevice.CurrentDevice.IdentifierForVendor.ToString();

            emailLogo.Frame = new Rectangle(Convert.ToInt32(View.Frame.Width) / 3,
                                            Convert.ToInt32(View.Frame.Width) / 3,
                                            Convert.ToInt32(View.Frame.Width) / 3,
                                            Convert.ToInt32(View.Frame.Width) / 3);
            mainTextTV.Frame        = new Rectangle(0, (Convert.ToInt32(emailLogo.Frame.Y) + Convert.ToInt32(emailLogo.Frame.Height)) + 40, Convert.ToInt32(View.Frame.Width), 26);
            View.BackgroundColor    = UIColor.FromRGB(36, 43, 52);
            mainTextTV.Text         = "Визитка синхронизируется";
            mainTextTV.Font         = UIFont.FromName(Constants.fira_sans, 22f);
            activityIndicator.Color = UIColor.FromRGB(255, 99, 62);
            activityIndicator.Frame = new Rectangle((int)(View.Frame.Width / 2 - View.Frame.Width / 20), (int)(View.Frame.Height - View.Frame.Width / 5), (int)(View.Frame.Width / 10), (int)(View.Frame.Width / 10));
            if (!methods.IsConnected())
            {
                NoConnectionViewController.view_controller_name = GetType().Name;
                this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                return;
            }
            InvokeInBackground(async() =>
            {
                #region uploading photos
                bool photos_exist   = true;
                var documents       = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                var cards_cache_dir = Path.Combine(documents, Constants.CardsPersonalImages);
                if (!Directory.Exists(cards_cache_dir))
                {
                    photos_exist = false;
                }
                else
                {
                    photos_exist       = false;
                    string[] filenames = Directory.GetFiles(cards_cache_dir);
                    foreach (var img in filenames)
                    {
                        photos_exist = true;
                        break;
                    }
                }
                var documentsLogo  = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                var logo_cache_dir = Path.Combine(documentsLogo, Constants.CardsLogo);
                if (Directory.Exists(logo_cache_dir))
                {
                    string[] filenames = Directory.GetFiles(logo_cache_dir);
                    foreach (var img in filenames)
                    {
                        photos_exist = true;
                        break;
                    }
                }
                List <int> attachments_ids_list = new List <int>();
                if (photos_exist)
                {
                    InvokeOnMainThread(() =>
                    {
                        mainTextTV.Text = "Фотографии выгружаются";
                    });
                    AttachmentsUploadModel res_photos = null;
                    try
                    {
                        res_photos = await attachments.UploadIOS(databaseMethods.GetAccessJwt(), UDID);
                    }
                    catch
                    {
                        if (!methods.IsConnected())
                        {
                            InvokeOnMainThread(() =>
                            {
                                NoConnectionViewController.view_controller_name = GetType().Name;
                                this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                                return;
                            });
                        }
                        return;
                    }
                    if (res_photos != null)
                    {
                        if (res_photos.attachments_ids != null)
                        {
                            attachments_ids_list = res_photos.attachments_ids;
                        }

                        if (res_photos.logo_id == Constants.image_upload_status_code401)
                        {
                            InvokeOnMainThread(() =>
                            {
                                ShowSeveralDevicesRestriction();
                                return;
                            });
                            return;
                        }
                    }

                    InvokeOnMainThread(() =>
                    {
                        mainTextTV.Text = "Визитка синхронизируется";
                    });
                }
                #endregion uploading photos
                var temp_ids = EditViewController.ids_of_attachments;//.AddRange(attachments_ids_list);
                temp_ids.AddRange(attachments_ids_list);
                System.Net.Http.HttpResponseMessage res_user = null;
                try
                {
                    res_user = await cards.CardUpdate(databaseMethods.GetAccessJwt(),
                                                      EditViewController.card_id,
                                                      databaseMethods.GetDataFromUsersCard(company_id, databaseMethods.GetLastSubscription(), EditCompanyDataViewControllerNew.position, EditCompanyDataViewControllerNew.corporativePhone),
                                                      EditPersonalDataViewControllerNew.is_primary,
                                                      SocialNetworkTableViewSource <int, int> .socialNetworkListWithMyUrl,
                                                      temp_ids,
                                                      UDID);
                }catch
                {
                    if (!methods.IsConnected())
                    {
                        InvokeOnMainThread(() =>
                        {
                            NoConnectionViewController.view_controller_name = GetType().Name;
                            this.NavigationController.PushViewController(sb.InstantiateViewController(nameof(NoConnectionViewController)), false);
                            return;
                        });
                    }
                    return;
                }
                if (res_user.StatusCode.ToString().Contains("401") || res_user.StatusCode.ToString().ToLower().Contains(Constants.status_code401))
                {
                    InvokeOnMainThread(() =>
                    {
                        ShowSeveralDevicesRestriction();
                        return;
                    });
                    return;
                }
                InvokeOnMainThread(() =>
                {
                    Clear();

                    var vc = sb.InstantiateViewController(nameof(RootQRViewController));
                    this.NavigationController.PushViewController(vc, true);
                });
            });
        }
        protected override async void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.LoadingLayout);
            clientName = Android.OS.Build.Manufacturer + " " + Android.OS.Build.Model;
            InitElements();
            if (!_methods.IsConnected())
            {
                NoConnectionActivity.ActivityName = this;
                StartActivity(typeof(NoConnectionActivity));
                Finish();
                return;
            }

            if (!EditCompanyDataActivity.ChangedCompanyData)
            {
                goto DoPersonalStuff;
            }

            #region uploading photos
            bool photosExist    = true;
            var  personalImages = await _nativeMethods.GetPersonalImages();

            if (personalImages == null)
            {
                photosExist = false;
            }
            else
            {
                photosExist = true;
            }
            var documentsLogo = await _nativeMethods.GetDocumentsLogo();

            if (documentsLogo != null)
            {
                photosExist = true;
            }
            int?       logoId             = null;
            List <int> attachmentsIdsList = new List <int>();
            if (photosExist)
            {
                _mainTextTv.Text = TranslationHelper.GetString("photosAreBeingUploaded", _ci);
                AttachmentsUploadModel resPhotos = null;
                try
                {
                    resPhotos = await _attachments.UploadAndroid(_databaseMethods.GetAccessJwt(), clientName, personalImages, documentsLogo);
                }
                catch (Exception ex)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return;
                    }
                }
                if (resPhotos == null)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        return;
                    }
                }
                if (resPhotos != null)
                {
                    //var deserialized_logo = JsonConvert.DeserializeObject<CompanyLogoModel>(res_photos);
                    logoId             = resPhotos.logo_id;
                    attachmentsIdsList = resPhotos.attachments_ids;
                    if (logoId == Constants.image_upload_status_code401)
                    {
                        ShowSeveralDevicesRestriction();
                        return;
                    }
                }
            }
            _mainTextTv.Text = TranslationHelper.GetString("cardIsSynchronizing", _ci);
            #endregion uploading photos
            string resCompany = null;
            try
            {
                if (logoId != null)
                {
                    if (EditPersonalProcessActivity.CompanyId != null)
                    {
                        resCompany = await _companies.UpdateCompanyCard(_databaseMethods.GetAccessJwt(), clientName, _databaseMethods.GetDataFromCompanyCard(), EditPersonalProcessActivity.CompanyId, logoId);
                    }
                    else
                    {
                        resCompany = await _companies.CreateCompanyCard(_databaseMethods.GetAccessJwt(), clientName, _databaseMethods.GetDataFromCompanyCard(), logoId);
                    }
                }
                else
                {
                    if (EditPersonalProcessActivity.CompanyId != null)
                    {
                        resCompany = await _companies.UpdateCompanyCard(_databaseMethods.GetAccessJwt(), clientName, _databaseMethods.GetDataFromCompanyCard(), EditPersonalProcessActivity.CompanyId);
                    }
                    else
                    {
                        resCompany = await _companies.CreateCompanyCard(_databaseMethods.GetAccessJwt(), clientName, _databaseMethods.GetDataFromCompanyCard());
                    }
                }
            }
            catch (Exception ex)
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }
            }
            if (String.IsNullOrEmpty(resCompany))
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }
            }
            if (resCompany == Constants.image_upload_status_code401.ToString())
            {
                ShowSeveralDevicesRestriction();
                return;
            }
            try
            {
                var deserialized = JsonConvert.DeserializeObject <CompanyCardResponse>(resCompany);
            }
            catch
            {
                _databaseMethods.ClearCompanyCardTable();
                var deserializedError = JsonConvert.DeserializeObject <List <CreateCompanyErrorModel> >(resCompany);
                Toast.MakeText(this, TranslationHelper.GetString("errorInCompanyData", _ci), ToastLength.Long).Show();
                base.OnBackPressed();
                return;
            }

            if (resCompany.Contains("id") && resCompany.Length < 12)
            {
                EditPersonalProcessActivity.CompanyId = Convert.ToInt32(JsonConvert.DeserializeObject <CompanyCardResponse>(resCompany).id);
            }
DoPersonalStuff:
            //caching card to db
            _databaseMethods.InsertUsersCard(
                EditPersonalDataActivity.MyName,
                EditPersonalDataActivity.MySurname,
                EditPersonalDataActivity.MyMiddlename,
                EditPersonalDataActivity.MyPhone,
                EditPersonalDataActivity.MyEmail,
                EditPersonalDataActivity.MyHomePhone,
                EditPersonalDataActivity.MySite,
                EditPersonalDataActivity.MyDegree,
                EditPersonalDataActivity.MyCardName,
                EditPersonalDataActivity.MyBirthDate,
                HomeAddressActivity.MyCountry,
                HomeAddressActivity.MyRegion,
                HomeAddressActivity.MyCity,
                HomeAddressActivity.FullAddressStatic,
                HomeAddressActivity.MyIndex,
                HomeAddressActivity.MyNotation,
                NewCardAddressMapActivity.Lat,
                NewCardAddressMapActivity.Lng,
                true
                );
            HttpResponseMessage res = null;
            try
            {
                res = await _cards.CardUpdate(_databaseMethods.GetAccessJwt(),
                                              EditActivity.CardId,
                                              _databaseMethods.GetDataFromUsersCard(EditPersonalProcessActivity.CompanyId,
                                                                                    _databaseMethods.GetLastSubscription(),
                                                                                    EditCompanyDataActivity.Position, EditCompanyDataActivity.CorporativePhone),
                                              EditPersonalDataActivity.IsPrimary,
                                              GetPersonalNetworks(),
                                              EditActivity.IdsOfAttachments,
                                              clientName);
            }
            catch (Exception ex)
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }
            }
            if (res == null)
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }
            }
            if (res.StatusCode.ToString().Contains("401") || res.StatusCode.ToString().ToLower().Contains(Constants.status_code401))
            {
                ShowSeveralDevicesRestriction();
                return;
            }

            await Clear();

            try
            {
                StartActivity(typeof(QrActivity));
                //var vc_list = this.NavigationController.ViewControllers.ToList();
                //try { vc_list.RemoveAt(vc_list.Count - 2); } catch { }
                //this.NavigationController.ViewControllers = vc_list.ToArray();
            }
            catch { }
        }