Пример #1
0
 public PostItemDetailPage(LiquidationPostItem postItem)
 {
     InitializeComponent();
     this.BindingContext = viewModel = new PostItemDetailPageViewModel(postItem.Id);
     viewModel.PostItem  = postItem;
     Init();
 }
Пример #2
0
        private async void FollowPost_Clicked(object sender, EventArgs e)
        {
            loadingPopup.IsVisible = true;
            if (UserLogged.IsLogged == false)
            {
                loadingPopup.IsVisible = false;
                await DisplayAlert("", Language.vui_long_dang_nhap, Language.dong);

                ((AppShell)Shell.Current).SetLoginPageActive();
                return;
            }

            Grid grid = (sender as Grid);

            LiquidationPostItem post = (LiquidationPostItem)(grid.GestureRecognizers[0] as TapGestureRecognizer).CommandParameter;

            if (post.CreatedById == UserLogged.Id)
            {
                loadingPopup.IsVisible = false;
                await DisplayAlert("", Language.khong_the_thuc_hien_chuc_nang_nay, Language.dong);

                return;
            }

            bool isFollow = await viewModel.Follow(post.Id);

            grid.Children[2].IsVisible = isFollow;
            grid.Children[3].IsVisible = isFollow;
            loadingPopup.IsVisible     = false;
        }
 public void AddPostItem(LiquidationPostItem postItem)
 {
     postItem.UserComments = new List <string>()
     {
         postItem.CreatedById
     };
     this._postItems.InsertOne(postItem);
 }
        public async Task <string[]> GetReceiveNotificationUser(string PostId)
        {
            LiquidationPostItem post = await this.GetById(PostId);

            var followList   = post.UserFollows ?? new List <string>();
            var commentArray = post.UserComments.ToArray();

            foreach (var item in commentArray)
            {
                if (!followList.Any(x => x == item))
                {
                    followList.Add(item);
                }
            }
            return(followList.ToArray());
        }
        public async Task <bool> Follow(string PostId, string UserId)
        {
            LiquidationPostItem post = _postItems.Find(x => x.Id == PostId).SingleOrDefault();

            if (post.UserFollows != null && post.UserFollows.Any(x => x == UserId)) // dang follow
            {
                post.UserFollows.Remove(UserId);
                _postItems.ReplaceOne(p => p.Id == PostId, post);
                return(false);
            }
            else
            {
                if (post.UserFollows == null)
                {
                    post.UserFollows = new List <string>();
                }

                post.UserFollows.Add(UserId);
                _postItems.ReplaceOne(p => p.Id == PostId, post);

                // send notifiaction.
                INotificationService notificationService = DependencyService.Get <INotificationService>();
                Guid ReceiverId = Guid.Parse(post.CreatedById);

                string            NotificationImage = (post.Images != null && post.Images.Length > 0) ? AvatarHelper.GetPostAvatar(post.Images.FirstOrDefault()) : null;
                NotificationModel notification      = new NotificationModel()
                {
                    UserId            = ReceiverId,
                    CurrentBadgeCount = (int)notificationService.CountNotReadNotificationUser(ReceiverId) + 1,
                    Title             = UserLogged.FullName + " đã theo dõi bài viết của bạn",
                    NotificationType  = NotificationType.ViewLiquidationPostItem,
                    PostItemId        = PostId,
                    CreatedDate       = DateTime.Now,
                    IsRead            = false,
                    Thumbnail         = NotificationImage
                };
                await notificationService.AddNotification(notification, Language.theo_doi);

                return(true);
            }
        }
Пример #6
0
        private async void Save_Clicked(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(EntryTitle.Text))
            {
                await DisplayAlert("", Language.vui_long_nhap_tieu_de_bai_dang, Language.dong);

                return;
            }
            if (string.IsNullOrEmpty(editor.Text))
            {
                await DisplayAlert("", Language.vui_long_nhap_mo_ta_bai_dang, Language.dong);

                return;
            }

            loadingPopup.IsVisible = true;
            MultipartFormDataContent form = new MultipartFormDataContent();

            string[] imageList = null;

            // kiem tra co hinh thi upload.
            if (viewModel.Media.Count > 0)
            {
                if (viewModel.Media.Count > 9)
                {
                    loadingPopup.IsVisible = false;
                    await DisplayAlert("", Language.vui_long_chon_toi_da_9_anh, Language.dong);

                    return;
                }

                imageList = new string[viewModel.Media.Count];
                for (int i = 0; i < viewModel.Media.Count; i++)
                {
                    var media = viewModel.Media[i];
                    // chua upload. upload roi link = null
                    if (string.IsNullOrEmpty(media.Path) == false) // co link la co chon tu dien thoai.
                    {
                        imageList[i] = $"{Guid.NewGuid().ToString()}.jpg";
                        var stream  = new System.IO.MemoryStream(File.ReadAllBytes(media.Path));
                        var content = new StreamContent(stream);
                        content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
                        {
                            Name     = "files" + i,
                            FileName = imageList[i]
                        };
                        form.Add(content);
                    }
                }

                var uploadResponse = await UploadImage(form);

                if (uploadResponse.IsSuccess == false)
                {
                    loadingPopup.IsVisible = false;
                    await DisplayAlert("", Language.loi_upload_hinh_anh_vui_long_thu_lai, Language.dong);

                    return;
                }
            }

            LiquidationPostItem item = new LiquidationPostItem();

            item.Title       = EntryTitle.Text;
            item.Type        = ControlSegment.GetCurrentIndex();
            item.Description = editor.Text;
            item.Images      = imageList;
            item.CreatedById = UserLogged.Id;
            item.CreatedBy   = new PostItemUser()
            {
                UserId   = UserLogged.Id,
                FullName = UserLogged.FullName,
                Avatar   = UserLogged.AvatarUrl.Replace(ApiConfig.IP2, "")
            };
            item.CreatedDate = DateTime.Now;
            item.HasImage    = imageList != null && imageList.Length > 0;

            if (EntryPrice.Text.HasValue)
            {
                item.HasPrice = true;
                item.Price    = DecimalHelper.ToCurrency(EntryPrice.Text.Value) + " đ";
            }

            if (viewModel.Province != null)
            {
                item.ProvinceId = viewModel.Province.Id;
                if (viewModel.District != null)
                {
                    item.DistrictId = viewModel.District.Id;
                    if (viewModel.Ward != null)
                    {
                        item.WardId = viewModel.Ward.Id;
                    }
                }
            }

            if (!string.IsNullOrWhiteSpace(viewModel.Address))
            {
                item.HasAddress = true;
                item.Address    = viewModel.Address;
            }

            if (viewModel.Category != null)
            {
                item.HasCategory  = true;
                item.CategoryName = viewModel.Category.Name;
            }

            ILiquidationPostItemService postItemService = DependencyService.Get <ILiquidationPostItemService>();

            postItemService.AddPostItem(item);
            MessagingCenter.Send <AddPostItemPage, LiquidationPostItem>(this, "AddPostItemSuccess", item);
            loadingPopup.IsVisible = false;
            await Navigation.PopAsync();
        }