Пример #1
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            itemNode = listItems[position];

            if (itemNode.GetItemType() == 0)
            {
                group       = itemNode as UserProfileGroupData;
                groupHolder = holder as UserProfileExpandableGroupHolder;


                if (position == 0)
                {
                    groupHolder.headerRL.Visibility = ViewStates.Visible;
                    groupHolder.itemRL.Visibility   = ViewStates.Gone;
                    //if (image_url != null)
                    //{
                    Thread backgroundThread = new Thread(new ThreadStart(() =>
                    {
                        Glide.Get(Application.Context).ClearDiskCache();
                    }));
                    backgroundThread.IsBackground = true;
                    backgroundThread.Start();
                    Glide.Get(context).ClearMemory();
                    Glide.With(Application.Context)
                    .Load("https://api.iamnearby.net/" + group.avatarUrl)
                    .Apply(new Com.Bumptech.Glide.Request.RequestOptions()
                           .SkipMemoryCache(true))
                    //.Placeholder(Resource.Drawable.specialization_imageIV)
                    .Into(groupHolder.profile_imageIV);
                    //}
                    if (uri != null)
                    {
                        groupHolder.profile_imageIV.SetImageURI(uri);
                    }
                    if (bitmap != null)
                    {
                        groupHolder.profile_imageIV.SetImageBitmap(bitmap);
                    }

                    if (group.online)
                    {
                        groupHolder.onlyWithReviewsS.Checked = true;
                        groupHolder.onlineValueTV.Text       = context.GetString(Resource.String.online_text);
                        groupHolder.onlineValueTV.SetTextColor(Color.Green);
                    }
                    else
                    {
                        groupHolder.onlyWithReviewsS.Checked = false;
                        groupHolder.onlineValueTV.Text       = context.GetString(Resource.String.offline_text);
                        groupHolder.onlineValueTV.SetTextColor(Color.Red);
                    }
                    try
                    {
                        char[]   chars = { ' ' };
                        string[] split = group.expert_name.Split(chars);
                        groupHolder.expert_nameTV.Text = split[0];
                    }
                    catch
                    {
                        groupHolder.expert_nameTV.Text = group.expert_name;
                    }
                    try
                    {
                        groupHolder.reviewCountTV.Text  = group.review_count + " отзывов";
                        groupHolder.rating_valueTV.Text = group.rating.ToString();
                        double rating_value = 0;
                        try
                        {
                            rating_value = Convert.ToDouble(group.rating, (CultureInfo.InvariantCulture));
                            if (rating_value >= 1)
                            {
                                groupHolder.star1IV.SetBackgroundResource(Resource.Drawable.active_star);
                                if (rating_value >= 2)
                                {
                                    groupHolder.star2IV.SetBackgroundResource(Resource.Drawable.active_star);
                                    if (rating_value >= 3)
                                    {
                                        groupHolder.star3IV.SetBackgroundResource(Resource.Drawable.active_star);
                                        if (rating_value >= 4)
                                        {
                                            groupHolder.star4IV.SetBackgroundResource(Resource.Drawable.active_star);
                                            if (rating_value >= 5)
                                            {
                                                groupHolder.star5IV.SetBackgroundResource(Resource.Drawable.active_star);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        catch { }
                    }
                    catch { }
                }
                else
                {
                    groupHolder.headerRL.Visibility = ViewStates.Gone;
                    groupHolder.itemRL.Visibility   = ViewStates.Visible;
                }
                groupHolder.skillNameTV.Text = group.skill_name;
                groupHolder.skillNameTV.SetTypeface(tf, TypefaceStyle.Bold);
                groupHolder.expert_nameTV.SetTypeface(tf, TypefaceStyle.Bold);
                groupHolder.reviewCountTV.SetTypeface(tf, TypefaceStyle.Normal);
                groupHolder.rating_valueTV.SetTypeface(tf, TypefaceStyle.Normal);
                groupHolder.expert_nameTV.SetTypeface(tf, TypefaceStyle.Bold);
                groupHolder.onlineValueTV.SetTypeface(tf, TypefaceStyle.Normal);
                groupHolder.dsadas.SetTypeface(tf, TypefaceStyle.Normal);
                groupHolder.sdsddsddddwww.SetTypeface(tf, TypefaceStyle.Normal);
                groupHolder.sdsddsddddwwwwww.SetTypeface(tf, TypefaceStyle.Normal);

                if (position != listItems.Count - 1)
                {
                    groupHolder.bottom_separatorLL.Visibility = ViewStates.Gone;
                }
                else
                {
                    groupHolder.bottom_separatorLL.Visibility = ViewStates.Visible;
                }
            }
            else if (itemNode.GetItemType() == 1)
            {
                entry       = itemNode as UserProfileEntryData;
                holderEntry = holder as UserProfileExpandableItemHolder;

                holderEntry.skillNameTV.SetTypeface(tf, TypefaceStyle.Normal);
                holderEntry.skillNameTV.Text = entry.entryName;
            }
        }
Пример #2
0
        protected override async void OnResume()
        {
            base.OnResume();
            try
            {
                ISharedPreferences       expert_feedback_pref = Application.Context.GetSharedPreferences("expert_feedback_pref", FileCreationMode.Private);
                ISharedPreferencesEditor edit_expert_feedback;
                ISharedPreferencesEditor edit = specialization_for_edit_pref.Edit();
                timer          = new System.Timers.Timer();
                timer.Interval = 100;

                if (userMethods.UserExists())
                {
                    SetContentView(Resource.Layout.FullProfile);
                    dialogsTV            = FindViewById <TextView>(Resource.Id.dialogsTV);
                    message_indicatorIV  = FindViewById <ImageView>(Resource.Id.message_indicatorIV);
                    profileLL            = FindViewById <LinearLayout>(Resource.Id.profileLL);
                    dialogsLL            = FindViewById <LinearLayout>(Resource.Id.dialogsLL);
                    specialistsLL        = FindViewById <LinearLayout>(Resource.Id.specialistsLL);
                    go_to_my_reviewsLL   = FindViewById <LinearLayout>(Resource.Id.go_to_my_reviewsLL);
                    singleDataScrollView = FindViewById <ScrollView>(Resource.Id.singleDataScrollView);
                    service_categs_list.Clear();
                    editBn              = FindViewById <Button>(Resource.Id.editBn);
                    profile_image       = FindViewById <ImageView>(Resource.Id.profile_image);
                    choose_photoIV      = FindViewById <ImageView>(Resource.Id.choose_photoIV);
                    add_skillIV         = FindViewById <Button>(Resource.Id.add_skillIV);
                    edit_skillIV        = FindViewById <ImageView>(Resource.Id.edit_skillIV);
                    edit_skillRL        = FindViewById <RelativeLayout>(Resource.Id.edit_skillRL);
                    tintLL              = FindViewById <LinearLayout>(Resource.Id.tintLL);
                    gridLL              = FindViewById <LinearLayout>(Resource.Id.gridLL);
                    recyclerView        = FindViewById <RecyclerView>(Resource.Id.recyclerView);
                    this.mLayoutManager = new LinearLayoutManager(this);
                    this.recyclerView.SetLayoutManager(mLayoutManager);
                    activityIndicator       = FindViewById <ProgressBar>(Resource.Id.activityIndicator);
                    expertNameTV            = FindViewById <TextView>(Resource.Id.expertNameTV);
                    skillNameTV             = FindViewById <TextView>(Resource.Id.skillNameTV);
                    onlineValueTV           = FindViewById <TextView>(Resource.Id.onlineValueTV);
                    rating_valueTV          = FindViewById <TextView>(Resource.Id.rating_valueTV);
                    description_text_dataTV = FindViewById <TextView>(Resource.Id.description_text_dataTV);
                    reviewCountTV           = FindViewById <TextView>(Resource.Id.reviewCountTV);
                    image_activityIndicator = FindViewById <ProgressBar>(Resource.Id.image_activityIndicator);
                    activityIndicator.IndeterminateDrawable.SetColorFilter(Resources.GetColor(Resource.Color.buttonBackgroundColor), Android.Graphics.PorterDuff.Mode.Multiply);
                    image_activityIndicator.IndeterminateDrawable.SetColorFilter(Resources.GetColor(Resource.Color.buttonBackgroundColor), Android.Graphics.PorterDuff.Mode.Multiply);
                    activityIndicator.Visibility = ViewStates.Visible;
                    ImageRL                     = FindViewById <RelativeLayout>(Resource.Id.ImageRL);
                    feedbackRL                  = FindViewById <RelativeLayout>(Resource.Id.feedbackRL);
                    onlineIV                    = FindViewById <ImageView>(Resource.Id.onlineIV);
                    onlyWithReviewsS            = FindViewById <Switch>(Resource.Id.onlyWithReviewsS);
                    specializationCV            = FindViewById <CardView>(Resource.Id.specializationCV);
                    specializationCV.Visibility = ViewStates.Gone;
                    go_to_my_reviewsLL.Click   += (s, e) =>
                    {
                        StartActivity(typeof(AllReviewsByMeActivity));
                    };

                    Typeface tf = Typeface.CreateFromAsset(Assets, "Roboto-Regular.ttf");
                    FindViewById <TextView>(Resource.Id.specialistsTV).SetTypeface(tf, TypefaceStyle.Normal);
                    dialogsTV.SetTypeface(tf, TypefaceStyle.Normal);
                    FindViewById <TextView>(Resource.Id.profileTV).SetTypeface(tf, TypefaceStyle.Normal);
                    expertNameTV.SetTypeface(tf, TypefaceStyle.Bold);
                    FindViewById <TextView>(Resource.Id.dsadas).SetTypeface(tf, TypefaceStyle.Bold);
                    onlineValueTV.SetTypeface(tf, TypefaceStyle.Normal);
                    FindViewById <TextView>(Resource.Id.sdsddsddddwww).SetTypeface(tf, TypefaceStyle.Normal);
                    skillNameTV.SetTypeface(tf, TypefaceStyle.Bold);
                    FindViewById <TextView>(Resource.Id.textView1).SetTypeface(tf, TypefaceStyle.Normal);
                    description_text_dataTV.SetTypeface(tf, TypefaceStyle.Normal);
                    reviewCountTV.SetTypeface(tf, TypefaceStyle.Bold);
                    rating_valueTV.SetTypeface(tf, TypefaceStyle.Normal);
                    FindViewById <TextView>(Resource.Id.textsssView1).SetTypeface(tf, TypefaceStyle.Normal);
                    editBn.SetTypeface(tf, TypefaceStyle.Bold);
                    skillNameTV.SetTypeface(tf, TypefaceStyle.Bold);
                    add_skillIV.SetTypeface(tf, TypefaceStyle.Normal);

                    var token     = userMethods.GetUsersAuthToken();
                    var user_data = await profileAndExpertMethodsPCL.UserProfileData(token);

                    edit.PutString("user_data", user_data);
                    edit.Apply();
                    if (user_data == "401")
                    {
                        Toast.MakeText(this, Resource.String.you_not_logined, ToastLength.Long).Show();
                        userMethods.ClearTable();
                        userMethods.ClearUsersDataTable();
                        userMethods.ClearTableNotif();
                        StartActivity(typeof(MainActivity));
                        return;
                    }

                    userMethods.InsertProfileData(user_data);
                    dialogsLL.Click += (s, e) =>
                    {
                        edit_dialog = dialog_data.Edit();
                        edit_dialog.PutString("come_from", "Came directly from bottom");
                        edit_dialog.Apply();
                        StartActivity(typeof(ChatListActivity));
                    };
                    specialistsLL.Click += (s, e) =>
                    {
                        StartActivity(typeof(SpecialistsCategoryActivity));
                    };
                    activityIndicator.Visibility = ViewStates.Gone;
                    try
                    {
                        var deserialized_user_data = JsonConvert.DeserializeObject <UserProfile>(user_data);

                        if (deserialized_user_data.myReviews == "0")
                        {
                            go_to_my_reviewsLL.Visibility = ViewStates.Gone;
                        }

                        if (!String.IsNullOrEmpty(deserialized_user_data.notify_alerts.msg_cnt_new.ToString()) && deserialized_user_data.notify_alerts.msg_cnt_new.ToString() != "0")
                        {
                            message_indicatorIV.Visibility = ViewStates.Visible;
                            dialogsTV.Text = GetString(Resource.String.dialogs) + " (" + deserialized_user_data.notify_alerts.msg_cnt_new + ")";
                        }
                        else
                        {
                            message_indicatorIV.Visibility = ViewStates.Gone;
                            dialogsTV.Text = GetString(Resource.String.dialogs);
                        }

                        this.listItems = new List <IExpertProfileDataType>();
                        listItems.Add(new UserProfileGroupData(
                                          null,
                                          null,
                                          null,
                                          deserialized_user_data.avatarUrl,
                                          deserialized_user_data.reviews,
                                          deserialized_user_data.rating,
                                          deserialized_user_data.id,
                                          deserialized_user_data.aboutExpert,
                                          deserialized_user_data.fullName,
                                          deserialized_user_data.phone,
                                          deserialized_user_data.city.name,
                                          deserialized_user_data.distance,
                                          deserialized_user_data.online));
                        int count = 0;
                        foreach (var item in deserialized_user_data.mainCategories)
                        {
                            count++;
                            var spec_obj = new UserProfileGroupData(count, item.name, item.spec_id, deserialized_user_data.id, deserialized_user_data.avatarUrl, "", "", "");

                            if (item.subcategories != null)
                            {
                                foreach (var subitem in item.subcategories)
                                {
                                    UserProfileEntryData spec_data = new UserProfileEntryData(1, subitem.name, subitem.categoryId, count - 1, subitem.services, subitem.photos /*, item.rating, item.reviews*/, subitem.description);
                                    spec_obj.items.Add(spec_data);
                                }
                            }
                            listItems.Add(spec_obj);
                        }
                        ;
                        userProfileExpandableAdapter             = new UserProfileExpandableAdapter(this, listItems, deserialized_user_data, tf);
                        userProfileExpandableAdapter.GroupClick += OnGroupClick;
                        recyclerView.SetAdapter(userProfileExpandableAdapter);
                        singleDataScrollView.Visibility        = ViewStates.Gone;
                        recyclerView.Visibility                = ViewStates.Visible;
                        UserProfileExpandableAdapter.image_url = "https://api.iamnearby.net" + deserialized_user_data.avatarUrl;
                    }
                    catch
                    {
                        deserialized_user_data_categs_empty = JsonConvert.DeserializeObject <UserProfileServiceCategoriesEmpty>(user_data);
                        if (deserialized_user_data_categs_empty.myReviews == "0")
                        {
                            go_to_my_reviewsLL.Visibility = ViewStates.Gone;
                        }
                        if (!String.IsNullOrEmpty(deserialized_user_data_categs_empty.notify_alerts.msg_cnt_new.ToString()) && deserialized_user_data_categs_empty.notify_alerts.msg_cnt_new.ToString() != "0")
                        {
                            message_indicatorIV.Visibility = ViewStates.Visible;
                            dialogsTV.Text = GetString(Resource.String.dialogs) + " (" + deserialized_user_data_categs_empty.notify_alerts.msg_cnt_new + ")";
                        }
                        else
                        {
                            message_indicatorIV.Visibility = ViewStates.Gone;
                            dialogsTV.Text = GetString(Resource.String.dialogs);
                        }
                        specializationCV.Visibility     = ViewStates.Gone;
                        singleDataScrollView.Visibility = ViewStates.Visible;
                        recyclerView.Visibility         = ViewStates.Gone;
                        /*var d = */
                        Thread backgroundThread = new Thread(new ThreadStart(() =>
                        {
                            Glide.Get(Application.Context).ClearDiskCache();
                        }));
                        backgroundThread.IsBackground = true;
                        backgroundThread.Start();
                        Glide.Get(this).ClearMemory();
                        Glide.With(Application.Context)
                        .Load("https://api.iamnearby.net/" + deserialized_user_data_categs_empty.avatarUrl)
                        .Apply(new Com.Bumptech.Glide.Request.RequestOptions()
                               .SkipMemoryCache(true))
                        //.Placeholder(Resource.Drawable.specialization_imageIV)
                        .Into(profile_image);

                        profile_image.Click += (s, e) =>
                        {
                            if (!String.IsNullOrEmpty(deserialized_user_data_categs_empty.avatarUrl))
                            {
                                DisplayMyPhotoActivity.image_url = "https://api.iamnearby.net" + deserialized_user_data_categs_empty.avatarUrl;
                                StartActivity(typeof(DisplayMyPhotoActivity));
                            }
                        };

                        if (deserialized_user_data_categs_empty.online)
                        {
                            onlineValueTV.SetTextColor(Color.Green);
                            onlyWithReviewsS.Checked = true;
                            onlineValueTV.Text       = GetString(Resource.String.online_text);
                        }
                        else
                        {
                            onlyWithReviewsS.Checked = false;
                            onlineValueTV.Text       = GetString(Resource.String.offline_text);
                            onlineValueTV.SetTextColor(Color.Red);
                        }

                        expertNameTV.Text = deserialized_user_data_categs_empty.fullName;
                        try
                        {
                            skillNameTV.Text = deserialized_user_data_categs_empty.serviceCategories[1].ToString();
                        }
                        catch { }
                    }
                    onlyWithReviewsS.CheckedChange += async(s, e) =>
                    {
                        if (onlyWithReviewsS.Checked)
                        {
                            onlineValueTV.Text = GetString(Resource.String.online_text);
                            onlineValueTV.SetTextColor(Color.Green);
                            var res = await profileAndExpertMethods.EditMyOnline(userMethods.GetUsersAuthToken(), true);
                        }
                        else
                        {
                            onlineValueTV.SetTextColor(Color.Red);
                            onlineValueTV.Text = GetString(Resource.String.offline_text);
                            var res = await profileAndExpertMethods.EditMyOnline(userMethods.GetUsersAuthToken(), false);
                        }
                    };

                    var folder = Android.OS.Environment.ExternalStorageDirectory + Java.IO.File.Separator + "DCIM/Camera";
                    if (!Directory.Exists(folder))
                    {
                        Directory.CreateDirectory(folder);
                    }

                    //var filesList
                    List <string> filesList = new List <string>();
                    try
                    {
                        filesList = Directory.GetFiles(folder).ToList <string>();
                    }
                    catch (Exception ex)
                    {
                    }
                    var reverseList = filesList.AsEnumerable().Reverse().ToList <string>();
                    reverseList.Insert(0, Resource.Drawable.open_camera.ToString());
                    reverseList.Insert(1, Resource.Drawable.open_gallery.ToString());

                    var gridview = FindViewById <GridView>(Resource.Id.gridview);
                    gridview.Adapter = new ImageAdapter(this, reverseList, Resources.DisplayMetrics.WidthPixels);

                    gridview.ItemClick += async delegate(object sender, AdapterView.ItemClickEventArgs args)
                    {
                        previous_base64 = "dsaads";

                        if (args.Position > 1)
                        {
                            Glide.With(Application.Context)
                            .Load(reverseList[args.Position])
                            //.Placeholder(Resource.Drawable.specialization_imageIV)
                            .Into(profile_image);
                            new UserProfileExpandableAdapter().LoadImage(reverseList[args.Position], null, null);
                            try { userProfileExpandableAdapter.NotifyDataSetChanged(); } catch { }
                        }
                        else if (args.Position == 0)
                        {
                            if (pictureMethods.IsThereAnAppToTakePictures(this))
                            {
                                PictureMethods.cameraOrGalleryIndicator = "camera";
                                pictureMethods.CreateDirectoryForPictures();
                                pictureMethods.TakeAPicture(this);
                            }
                        }
                        else if (args.Position == 1)
                        {
                            PictureMethods.cameraOrGalleryIndicator = "gallery";
                            var imageIntent = new Intent();
                            imageIntent.SetType("image/*");
                            //imageIntent.SetType("file/*");
                            imageIntent.SetAction(Intent.ActionGetContent);
                            StartActivityForResult(
                                Intent.CreateChooser(imageIntent, "Select photo"), 0);
                        }

                        if (args.Position > 1)
                        {
                            if (!String.IsNullOrEmpty(previous_base64))
                            {
                                try
                                {
                                    chosen_bitmap = ((BitmapDrawable)profile_image.Drawable).Bitmap;
                                    MemoryStream chosen_memStream = new MemoryStream();
                                    chosen_bitmap.Compress(Bitmap.CompressFormat.Png, 0, chosen_memStream);
                                    byte[] chosen_ba = chosen_memStream.ToArray();
                                    chosen_base64 = Base64.EncodeToString(chosen_ba, Base64.Default);
                                }
                                catch { }
                                timer.Elapsed += delegate
                                {
                                    try
                                    {
                                        chosen_bitmap = ((BitmapDrawable)profile_image.Drawable).Bitmap;
                                        MemoryStream chosen_memStream = new MemoryStream();
                                        chosen_bitmap.Compress(Bitmap.CompressFormat.Jpeg, 90, chosen_memStream);
                                        byte[] chosen_ba = chosen_memStream.ToArray();
                                        chosen_base64 = Base64.EncodeToString(chosen_ba, Base64.Default);
                                        if (chosen_base64 != previous_base64)
                                        {
                                            RunOnUiThread(async() =>
                                            {
                                                var res = await upload_avatar();
                                                if (res != null)
                                                {
                                                    timer.Stop();
                                                    var intent = new Intent(this, typeof(UserProfileActivity));
                                                    intent.SetFlags(ActivityFlags.NoHistory);
                                                    intent.SetFlags(ActivityFlags.NewTask);
                                                    StartActivity(intent);
                                                    Finish();
                                                }
                                            });
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                    }
                                };
                                timer.Start();
                                timer.Enabled = true;
                            }
                        }
                    };

                    tintLL.Click += (s, e) =>
                    {
                        add_skillIV.Visibility = ViewStates.Visible;
                        tintLL.Visibility      = ViewStates.Gone;
                        gridLL.Visibility      = ViewStates.Gone;
                    };
                    add_skillIV.Click += (s, e) =>
                    {
                        StartActivity(typeof(YourSpecializationActivity));
                    };
                    editBn.Click += (s, e) =>
                    {
                        StartActivity(typeof(PersonalDataActivity));
                    };

                    choose_photoIV.Click += async(s, e) =>
                    {
                        var granted = await checkCameraPermission();

                        if (!granted)
                        {
                            return;
                        }
                        if (tintLL.Visibility == ViewStates.Visible)
                        {
                            tintLL.Visibility      = ViewStates.Gone;
                            gridLL.Visibility      = ViewStates.Gone;
                            add_skillIV.Visibility = ViewStates.Visible;
                        }
                        else
                        {
                            tintLL.Visibility      = ViewStates.Visible;
                            gridLL.Visibility      = ViewStates.Visible;
                            add_skillIV.Visibility = ViewStates.Gone;
                        }
                    };
                }
            }
            catch
            {
                StartActivity(typeof(MainActivity));
            }
        }