public async Task <IActionResult> Upsert(int?id)  // forumpost id
        {
            Tuple <string, IEnumerable <Category> > tupleResponse = await _categoryRepo.GetAllAsync(SD.Categories, HttpContext.Session.GetString("JWToken"));

            if (tupleResponse.Item1 != "")
            {
                TempData["error"] = tupleResponse.Item1;
                return(View(new ForumPostVM()
                {
                    CategoryList = new List <SelectListItem>(), ForumPostModel = new ForumPost()
                    {
                    }
                }));
            }
            IEnumerable <Category> categoryList = tupleResponse.Item2;

            ForumPostVM objVM = new ForumPostVM
            {
                CategoryList = categoryList.Select(i => new Microsoft.AspNetCore.Mvc.Rendering.SelectListItem
                {
                    Text  = i.Title,
                    Value = i.Id.ToString()
                }),
                ForumPostModel = new ForumPost()
            };

            if (id == null)
            {
                return(View(objVM));
            }

            var forumPostTuple = await _forumRepo.GetAsync(SD.ForumPosts, id.GetValueOrDefault(),
                                                           HttpContext.Session.GetString("JWToken"));

            if (forumPostTuple.Item1 != "")
            {
                TempData["error"] = forumPostTuple.Item1;
                return(View(objVM));
            }

            objVM.ForumPostModel = forumPostTuple.Item2;

            return(View(objVM));
        }
        public async Task <IActionResult> Upsert(ForumPostVM forumPostObj)
        {
            if (ModelState.IsValid)
            {
                var userTuple = await _accountRepo.GetUserId(SD.AccountApi, User.Identity.Name, HttpContext.Session.GetString("JWToken"));

                if (userTuple.Item1 != "")
                {
                    TempData["error"] = userTuple.Item1;
                    return(View(forumPostObj));
                }

                ForumPost originalObj = null;
                if (forumPostObj.ForumPostModel.Id != 0)
                {
                    var errorTupleObj = await _forumRepo.GetAsync(SD.ForumPosts, forumPostObj.ForumPostModel.Id,
                                                                  HttpContext.Session.GetString("JWToken"));

                    if (errorTupleObj.Item1 != "")
                    {
                        TempData["error"] = errorTupleObj.Item1;
                        return(View(forumPostObj));
                    }

                    originalObj = errorTupleObj.Item2;
                }

                var files = HttpContext.Request.Form.Files;
                if (files.Count > 0)
                {
                    int counter = 0;
                    if (originalObj != null)
                    {
                        counter = originalObj.Images.Count;
                    }
                    for (int i = 0; i < files.Count && counter < 3; i++)
                    {
                        byte[] p1 = null;
                        using (var fs1 = files[i].OpenReadStream())
                        {
                            p1 = Resizer.Resize(fs1, 200, 200);
                        }

                        forumPostObj.ForumPostModel.Images.Add(new Image
                        {
                            Picture = p1,
                            UserId  = userTuple.Item2
                        });
                        counter++;
                    }
                }

                forumPostObj.ForumPostModel.UserId = userTuple.Item2;

                if (forumPostObj.ForumPostModel.Id == 0)
                {
                    var result = await _forumRepo.CreateAsync(SD.ForumPosts, forumPostObj.ForumPostModel, HttpContext.Session.GetString("JWToken"));

                    if (result.Item1 != "")
                    {
                        TempData["error"] = result.Item1;
                        return(View(forumPostObj));
                    }
                }
                else
                {
                    var result = await _forumRepo.UpdateAsync(SD.ForumPosts, forumPostObj.ForumPostModel.Id, forumPostObj.ForumPostModel, HttpContext.Session.GetString("JWToken"));

                    if (result.Item1 != "")
                    {
                        TempData["error"] = result.Item1;
                        return(View(forumPostObj));
                    }
                }

                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                var tupleResponse = await _categoryRepo.GetAllAsync(SD.Categories, HttpContext.Session.GetString("JWToken"));

                if (tupleResponse.Item1 != "")
                {
                    TempData["error"] = tupleResponse.Item1;
                    return(View(new ForumPostVM()
                    {
                        CategoryList = new List <SelectListItem>(), ForumPostModel = new ForumPost()
                        {
                        }
                    }));
                }
                ForumPostVM forumVM = new ForumPostVM
                {
                    CategoryList = tupleResponse.Item2.Select(i => new SelectListItem
                    {
                        Text  = i.Title,
                        Value = i.Id.ToString()
                    }),
                    ForumPostModel = new ForumPost()
                };
                return(View(new ForumPostVM()
                {
                    CategoryList = new List <SelectListItem>(), ForumPostModel = new ForumPost()
                }));
            }
        }