示例#1
0
        public ActionResult BrowseSuggestions(int storyID)
        {
            StorySuggestionsModel model = new StorySuggestionsModel();

            model.CurrentStory = new GetStories().GetStoryByID(storyID);
            List <SuggestionModel> suggestionsAvailable = new List <SuggestionModel>();

            if (Session["username"] == null)
            {
                return(RedirectToAction("Index"));
            }
            var username = Session["username"].ToString();

            GetSuggestions suggestionobj = new GetSuggestions();

            var results = suggestionobj.ReturnSuggestions(storyID);

            for (int i = 0; i < results.Count; i++)
            {
                SuggestionModel s = new SuggestionModel();
                s.DatePosted    = results[i].DatePosted;
                s.Content       = results[i].Content;
                s.OwningStoryID = results[i].OwningStoryID;
                s.SuggestionID  = results[i].SuggestionID;
                suggestionsAvailable.Add(s);
            }

            model.Suggestions = suggestionsAvailable;
            return(View(model));
        }
示例#2
0
        public static List<SuggestionModel> GetSuggestionsBySubDomain(string subdomainname)
        {
            List<SuggestionModel> lists = new List<SuggestionModel>();
            using (SqlConnection con = new SqlConnection(connectstring))
            {
                try
                {
                    con.Open();
                    SqlCommand cmd = con.CreateCommand();
                    cmd.CommandText = "select distinct ForumId,Id from SuggestionStagging where commentscount>0 and SubDomain='" + subdomainname + "'";
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        SuggestionModel sugg = new SuggestionModel();
                        sugg.ForumId = int.Parse(reader["ForumId"].ToString());
                        sugg.Id = int.Parse(reader["Id"].ToString());
                        lists.Add(sugg);
                    }

                }
                catch (SqlException e)
                {
                    throw e;
                }
                finally
                {
                    con.Close();
                    con.Dispose();
                }
            }
            return lists;
        }
        public async Task <IActionResult> GetById(string id)
        {
            var entity = await suggestionApp.GetAsync(id);

            if (entity.IsNull())
            {
                return(NotFound());
            }

            var model = SuggestionModel.ToModel(entity);

            var urlHelper   = urlHelperFactory.GetUrlHelper(ControllerContext);
            var getByIdlink = GetSuggestionByIdLink(urlHelper, model.Id, true);
            var deleteLink  = DeleteSuggestionLink(urlHelper, model.Id);
            var updateLink  = UpdateSuggestionLink(urlHelper, model.Id);

            model.Links = new List <Link>
            {
                getByIdlink,
                updateLink,
                deleteLink
            };

            return(Ok(model));
        }
示例#4
0
        public List <SuggestionModel> GetSuggestions(ICollection <int> ids)
        {
            var list = new List <SuggestionModel>();

            foreach (int id in ids)
            {
                var profile     = new UserProfileHandler().Get(id);
                var user        = new UserHandler().Get(profile.Entity.UserId);
                var gender      = new GenderHandler().Get(profile.Entity.GenderId);
                var status      = new MaritalStatusHandler().Get(profile.Entity.StatusId);
                var religion    = new ReligionHandler().Get(profile.Entity.ReligionId);
                var orientation = new OrientationHandler().Get(profile.Entity.OrientationId);

                if (!profile.CompletedRequest || !user.CompletedRequest || !gender.CompletedRequest || !status.CompletedRequest || !religion.CompletedRequest || !orientation.CompletedRequest)
                {
                    return(null);
                }

                var suggestionModel = new SuggestionModel
                {
                    UserName    = user.Entity.UserUsername,
                    Description = string.IsNullOrEmpty(profile.Entity.UserProfileDescription) ? "This user has not provided a description." : profile.Entity.UserProfileDescription,
                    FullName    = profile.Entity.UserProfileName + " " + profile.Entity.UserProfileSurname,
                    Age         = AgeCalculator.GetDifferenceInYears(profile.Entity.UserProfileBirthday, DateTime.Now).ToString(),
                    Gender      = gender.Entity.GenderName,
                    Orientation = orientation.Entity.OrientationName,
                    Religion    = religion.Entity.ReligionName,
                    Status      = status.Entity.StatusName
                };

                list.Add(suggestionModel);
            }
            return(list);
        }
        public IHttpActionResult PutSuggestionModel(int id, SuggestionModel suggestionModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != suggestionModel.RecordNum)
            {
                return(BadRequest());
            }

            db.Entry(suggestionModel).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SuggestionModelExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#6
0
        public void TestCreate(string searchText, string fullPath, SuggestedPathType suggestedPathType,
                               string relativePath, string parentDir, SuggestionType suggestionType)
        {
            _autoMocker
            .Setup <IPathService, string>(m => m.GetParentDirectory(searchText))
            .Returns(parentDir);
            _autoMocker
            .Setup <IPathService, string>(m => m.GetRelativePath(parentDir, fullPath))
            .Returns(relativePath);
            _autoMocker
            .Setup <IPathService, string>(m => m.LeftTrimPathSeparators(relativePath))
            .Returns(relativePath);

            var factory   = _autoMocker.CreateInstance <SuggestedPathViewModelFactory>();
            var model     = new SuggestionModel(fullPath, suggestionType);
            var viewModel = factory.Create(searchText, model);

            Assert.NotNull(viewModel);
            Assert.IsType <SuggestedPathViewModel>(viewModel);

            var suggestedPathViewModel = (SuggestedPathViewModel)viewModel;

            Assert.Equal(suggestedPathType, suggestedPathViewModel.Type);
            Assert.Equal(relativePath, suggestedPathViewModel.Text);
            Assert.Equal(fullPath, suggestedPathViewModel.FullPath);
        }
示例#7
0
        public Result <List <SuggestionResult> > Search(string query, string city = "成都市")
        {
            var checkMap = CheckMapKey();

            if (!checkMap.IsSuccess)
            {
                return(Result <List <SuggestionResult> > .InnerError(checkMap.ErrorMessage));
            }
            IDictionary <string, string> querystringArrays = new Dictionary <string, string>();

            querystringArrays.Add("ak", MapAk);
            querystringArrays.Add("output", OutputString);
            querystringArrays.Add("query", query);
            querystringArrays.Add("region", city);
            //querystringArrays.Add("timestamp", AksnCaculater.GetTimeStamp());
            querystringArrays.Add("city_limit", "true");

            //querystringArrays.Add("sn", AksnCaculater.CaculateAKSN(MapAk, MapSk, MapSuggestionUrl, querystringArrays));
            var url = AksnCaculater.HttpBuildQuery(querystringArrays);

            var result = HttpRequestHelper.SendRequest(MapHost + "/place/v2/search" + "?" + url);

            if (!result.IsSuccess)
            {
                return(Result <List <SuggestionResult> > .LogicError(result.ErrorMessage));
            }
            SuggestionModel suggestionModel = result.Data.JsonToObj <SuggestionModel>();

            return(suggestionModel.Status == 0 ? Result <List <SuggestionResult> > .Success(suggestionModel.Results ?? new List <SuggestionResult>()) : Result <List <SuggestionResult> > .LogicError(suggestionModel.Message));
        }
示例#8
0
        public MainModel()
        {
            // This forces the instantiation
            mDictionarySearcher = ServiceContainer.Resolve<SearchModel> ();
            mSuggestionModel = ServiceContainer.Resolve<SuggestionModel> ();
            mPlaySoundModel = ServiceContainer.Resolve<PlaySoundModel> ();

            mDictionarySearcher.SearchCompleted += OnSearchCompleted;

            var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            mDatabasePath = Path.Combine(documentsPath, "..", "Library", "db_sqlite-net.db");

            bool isFirstLoad = false;

            using (var conn = new SQLite.SQLiteConnection(mDatabasePath))
            {
                // https://github.com/praeclarum/sqlite-net/wiki
                // In general, it will execute an automatic migration
                conn.CreateTable<WordModel>();
                conn.CreateTable<WaveModel>();

                InitialRefresh(conn);
                LoadNextWord(conn);
                RefreshWordsList(conn);

                isFirstLoad = conn.Table<WordModel>().Count() == 0;
            }

            if (isFirstLoad)
            {
                AddWord("Thanks");
                AddWord("For");
                AddWord("Downloading");
            }
        }
        public async Task <SuggestionModel> AddAsync(SuggestionModel suggestionModel,
                                                     string mediaFolderPath, string prefixSuggestionFileName)
        {
            var    mediaAbsoluteBasePath = Path.Combine(env.WebRootPath, mediaFolderPath.Replace("~/", string.Empty));
            string newFileName           = null;

            try
            {
                if (suggestionModel == null)
                {
                    throw new ArgumentNullException("suggestionModel");
                }


                if (OssFile.HasFile(suggestionModel.FileUploaded))
                {
                    newFileName = await OssFile.SaveFile(suggestionModel.FileUploaded, prefixSuggestionFileName, mediaAbsoluteBasePath);;
                }
                else
                {
                    if (!string.IsNullOrEmpty(suggestionModel.FileUploadedName) &&
                        File.Exists(Path.Combine(mediaAbsoluteBasePath, suggestionModel.FileUploadedName)))
                    {
                        newFileName = OssFile.GetNewFileName(suggestionModel.FileUploadedName, prefixSuggestionFileName);
                        File.Move
                        (
                            Path.Combine(mediaAbsoluteBasePath, suggestionModel.FileUploadedName),
                            Path.Combine(mediaAbsoluteBasePath, newFileName)
                        );
                    }
                }

                Suggestion newSuggestion = new Suggestion
                                           (
                    suggestionModel.Id,
                    suggestionModel.Subject,
                    suggestionModel.Message,
                    newFileName,
                    suggestionModel.IsRead,
                    suggestionModel.IsSolved,
                    DateTime.UtcNow,
                    suggestionModel.UserModel.Id,
                    null
                                           );

                biblioEntities.Suggestions.Add(newSuggestion);
                await biblioEntities.SaveChangesAsync();

                return(new SuggestionModel(newSuggestion, mediaFolderPath, mediaFolderPath));
            }
            catch (Exception ex)
            {
                if (OssFile.HasFile(suggestionModel.FileUploaded) && !string.IsNullOrEmpty(newFileName))
                {
                    OssFile.DeleteFile(newFileName, mediaAbsoluteBasePath);
                }
                throw ex;
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            SuggestionModel suggestionModel = db.SuggestionModels.Find(id);

            db.SuggestionModels.Remove(suggestionModel);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public IActionResult PostSuggestionAsync([FromBody] SuggestionModel model, CancellationToken cancellationToken)
        {
            var response = new CreatedSuggestionDto {
                SuggestionId = Guid.NewGuid()
            };

            return(CreatedAtRoute(nameof(GetSuggestionAsync), response, response));
        }
        public ISuggestedPathViewModel Create(string searchText, SuggestionModel model)
        {
            var root         = _pathService.GetParentDirectory(searchText);
            var relativePath = _pathService.GetRelativePath(root, model.FullPath);
            var text         = _pathService.LeftTrimPathSeparators(relativePath);
            var type         = CreateFrom(model.Type);

            return(new SuggestedPathViewModel(model.FullPath, type, text));
        }
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string          account = context.Request.Form["account"];
            string          content = context.Request.Form["content"];
            SuggestionModel s       = new SuggestionModel(account, content);

            context.Response.Write(Suggestion.insertSuggestion(s));
        }
 public ActionResult Edit([Bind(Include = "RecordNum,Topic,Suggestion")] SuggestionModel suggestionModel)
 {
     if (ModelState.IsValid)
     {
         db.Entry(suggestionModel).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(suggestionModel));
 }
        public ActionResult Create([Bind(Include = "RecordNum,Topic,Suggestion")] SuggestionModel suggestionModel)
        {
            if (ModelState.IsValid)
            {
                db.SuggestionModels.Add(suggestionModel);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(suggestionModel));
        }
        public IHttpActionResult GetSuggestionModel(int id)
        {
            SuggestionModel suggestionModel = db.SuggestionModels.Find(id);

            if (suggestionModel == null)
            {
                return(NotFound());
            }

            return(Ok(suggestionModel));
        }
        public IHttpActionResult PostSuggestionModel(SuggestionModel suggestionModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.SuggestionModels.Add(suggestionModel);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = suggestionModel.RecordNum }, suggestionModel));
        }
        // GET: SuggestionModels/Details/5
        public ActionResult Details(int?id)  // ? means that it's null-able
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SuggestionModel suggestionModel = db.SuggestionModels.Find(id);

            if (suggestionModel == null)
            {
                return(HttpNotFound());
            }
            return(View(suggestionModel));
        }
        public IHttpActionResult DeleteSuggestionModel(int id)
        {
            SuggestionModel suggestionModel = db.SuggestionModels.Find(id);

            if (suggestionModel == null)
            {
                return(NotFound());
            }

            db.SuggestionModels.Remove(suggestionModel);
            db.SaveChanges();

            return(Ok(suggestionModel));
        }
 public ActionResult Add(string id)
 {
     var repo = new Repository<SuggestionModel>(DbCollection.SuggestionFriend);
     var userId = User.Identity.GetUserId();
     var suggestion = new SuggestionModel
     {
         UserId = userId,
         UserSuggestionId = id,
         Created = DateTime.Now.ToString(),
         Enable = true
     };
     repo.Insert(suggestion);
     return Json(new { result = true });
 }
        // GET: SuggestionModels/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SuggestionModel suggestionModel = db.SuggestionModels.Find(id);

            if (suggestionModel == null)
            {
                return(HttpNotFound());
            }
            return(View(suggestionModel));
        }
        // GET: SuggestionModels/Details/5           /* 5 is the ID of the object*/
        public ActionResult Details(int?id)          /*? is nullable*/
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SuggestionModel suggestionModel = db.SuggestionModels.Find(id); /* go into db, go into Sug..Mod and find matching ID*/

            if (suggestionModel == null)                                    /* info nullable*/
            {
                return(HttpNotFound());                                     /* find info on above*/
            }
            return(View(suggestionModel));
        }
示例#23
0
        // GET: SuggestionModels/Details/5
        public ActionResult Details(int?id)         // also allows us to read, check for id, can be null
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); //error catch
            }
            SuggestionModel suggestionModel = db.SuggestionModels.Find(id);  //creates new object, find matching id

            if (suggestionModel == null)
            {
                return(HttpNotFound());
            }
            return(View(suggestionModel));  //else return view of that object
        }
示例#24
0
        public async Task <IActionResult> Suggestion([Bind("Name,Message")] SuggestionModel suggestionModel)
        {
            if (ModelState.IsValid)
            {
                var suggestionModelName = suggestionModel.Name ?? "annonomous";
                await _emailSender.SendEmailsAsync(VollyConstants.AllEmails, "Suggestion from " + suggestionModelName,
                                                   suggestionModel.GetEmailMessage());

                Message = "Thank you, your message has been sent!";
                return(RedirectToAction("Suggestion"));
            }

            return(View(suggestionModel));
        }
示例#25
0
        public static SuggestionModel SaveSuggest(SuggestionsInfoModel model, UserLoginInfo loginUser)
        {
            var result = new SuggestionModel()
            {
                IsSuccess = true
            };

            try {
                if (model.Id == 0)
                {
                    model.BFIsValid         = 1;
                    model.BFStatus          = 1;
                    model.BFCreateUserNo    = loginUser.JobNum;
                    model.BFCreateUserName  = loginUser.UserName;
                    model.BFCreateTime      = DateTime.Now;
                    model.BFOperateUserNo   = loginUser.JobNum;
                    model.BFOperateUserName = loginUser.UserName;
                    model.BFOperateTime     = DateTime.Now;
                    model.BFFeedBackComment = string.Empty;
                    model.BFRespUserNo      = string.Empty;
                    model.BFRespName        = string.Empty;
                    model.Id       = _suggestDAL.Insert(model);
                    result.Message = EncryptHelper.DesEncrypt(model.Id.ToString());
                    result.model   = model;
                }
                else
                {
                    model.BFOperateUserNo   = loginUser.JobNum;
                    model.BFOperateUserName = loginUser.UserName;
                    model.BFOperateTime     = DateTime.Now;
                    var update = _suggestDAL.Update(model);
                    if (!update)
                    {
                        result.IsSuccess = false;
                    }
                    result.model = model;
                }
            }
            catch (Exception ex) {
                result.IsSuccess = false;
                result.Message   = ex.Message;
            }
            return(result);
        }
示例#26
0
        public void TestCreateThrows(string searchText, string fullPath, string relativePath,
                                     string parentDir, byte suggestionType)
        {
            _autoMocker
            .Setup <IPathService, string>(m => m.GetParentDirectory(searchText))
            .Returns(parentDir);
            _autoMocker
            .Setup <IPathService, string>(m => m.GetRelativePath(parentDir, fullPath))
            .Returns(relativePath);
            _autoMocker
            .Setup <IPathService, string>(m => m.LeftTrimPathSeparators(relativePath))
            .Returns(relativePath);

            var factory = _autoMocker.CreateInstance <SuggestedPathViewModelFactory>();
            var model   = new SuggestionModel(fullPath, (SuggestionType)suggestionType);

            void Create() => factory.Create(searchText, model);

            Assert.Throws <ArgumentOutOfRangeException>(Create);
        }
示例#27
0
        public ActionResult ViewSuggestion(int suggestionID)
        {
            ViewSuggestionModel model = new ViewSuggestionModel();
            SuggestionTable     table = new GetSuggestions().ReturnSuggestionByID(suggestionID);
            SuggestionModel     sug   = new SuggestionModel();

            if (Session["username"] == null)
            {
                return(RedirectToAction("Index"));
            }

            sug.Content       = table.Content;
            sug.DatePosted    = table.DatePosted;
            sug.OwningStoryID = table.OwningStoryID;
            sug.SuggestionID  = table.SuggestionID;

            model.Suggestion   = sug;
            model.CurrentStory = new GetStories().GetStoryByID(sug.OwningStoryID);

            return(View(model));
        }
示例#28
0
 public void InserOrUpdateSuggestion(XmlNodeList suggestionXmls, IDbTransaction tran)
 {
     foreach (XmlNode node in suggestionXmls)
     {
         string           json       = Newtonsoft.Json.JsonConvert.SerializeXmlNode(node);
         SuggestionModel  CLYJModel  = JsonConvert.DeserializeObject <SuggestionModel>(json);
         B_OA_ISuggestion suggestion = CLYJModel.CLYJ;
         suggestion.Condition.Add("TID = " + suggestion.TID);
         if (Utility.Database.QueryObject(suggestion, tran) == null)
         {
             Utility.Database.Insert(suggestion, tran);
             _logger.InfoFormat("成功插入意见数据!");
         }
         else
         {
             suggestion.Condition.Add("TID = " + suggestion.TID);
             Utility.Database.Update(suggestion, tran);
             _logger.InfoFormat("成功修改意见表数据!");
         }
     }
 }
        public async Task <IActionResult> Create([FromBody] SuggestionModel suggestion)
        {
            suggestion.IsNull().Throw <InvalidParameterException>(string.Format(Messages.CannotBeNull, "suggestion"));

            var entity = await suggestionApp.SaveAsync(suggestion.ToDomain());

            var result = SuggestionModel.ToModel(entity);

            var urlHelper   = urlHelperFactory.GetUrlHelper(ControllerContext);
            var getByIdlink = GetSuggestionByIdLink(urlHelper, result.Id);
            var deleteLink  = DeleteSuggestionLink(urlHelper, result.Id);
            var updateLink  = UpdateSuggestionLink(urlHelper, result.Id);

            result.Links = new List <Link>
            {
                getByIdlink,
                updateLink,
                deleteLink
            };

            return(new CreatedResult(getByIdlink.Href, result));
        }
示例#30
0
        static public bool insertSuggestion(SuggestionModel s)
        {
            string command = $"insert into suggestion (account,content) values ('{s.account}','{s.content}')";

            return(SQL.Excute(command));
        }
        public async Task <SuggestionModel> SetAsync(SuggestionModel suggestionModel,
                                                     string mediaFolderPath, string mediaFolderTmpPath, string prefixSuggestionImageName, string prefixSuggestionFileName)
        {
            string newFileName           = null;
            var    mediaAbsoluteBasePath = Path.Combine(env.WebRootPath, mediaFolderPath?.Replace("~/", string.Empty));

            try
            {
                if (suggestionModel == null)
                {
                    throw new ArgumentNullException("suggestionModel");
                }

                var currentSuggestion = await biblioEntities.Suggestions.FindAsync(suggestionModel.Id);

                if (currentSuggestion == null)
                {
                    throw new KeyNotFoundException("Suggestion");
                }

                bool   deleteCurrentFile     = false;
                string currentSuggestionFile = currentSuggestion.File;


                if (OssFile.HasFile(suggestionModel.FileUploaded))
                {
                    newFileName       = await OssFile.SaveFile(suggestionModel.FileUploaded, prefixSuggestionFileName, mediaAbsoluteBasePath);;
                    deleteCurrentFile = true;
                }
                else if (!string.IsNullOrEmpty(suggestionModel.FileUploadedName) &&
                         File.Exists(Path.Combine(mediaAbsoluteBasePath, suggestionModel.FileUploadedName)))
                {
                    newFileName = OssFile.GetNewFileName(suggestionModel.FileUploadedName, prefixSuggestionFileName);
                    File.Move
                    (
                        Path.Combine(mediaAbsoluteBasePath, suggestionModel.FileUploadedName),
                        Path.Combine(mediaAbsoluteBasePath, newFileName)
                    );
                    deleteCurrentFile = true;
                }
                else
                {
                    newFileName = currentSuggestion.File;
                }

                Suggestion newSuggestion = new Suggestion
                                           (
                    suggestionModel.Id,
                    suggestionModel.Subject,
                    suggestionModel.Message,
                    newFileName,
                    suggestionModel.IsRead,
                    suggestionModel.IsSolved,
                    currentSuggestion.Date,
                    currentSuggestion.UserId,
                    null
                                           );

                biblioEntities.Entry(currentSuggestion).CurrentValues.SetValues(newSuggestion);
                await biblioEntities.SaveChangesAsync();


                if (deleteCurrentFile)
                {
                    OssFile.DeleteFile(currentSuggestionFile, mediaAbsoluteBasePath);
                }

                return(new SuggestionModel(newSuggestion, mediaFolderPath, mediaFolderPath));
            }
            catch (Exception ex)
            {
                if (OssFile.HasFile(suggestionModel.FileUploaded) && !string.IsNullOrEmpty(newFileName))
                {
                    OssFile.DeleteFile(newFileName, mediaAbsoluteBasePath);
                }
                throw ex;
            }
        }
        public async Task <IActionResult> Create(LayoutModel layoutModel)
        {
            try
            {
                PageModel <SuggestionModel> pageModel = null;
                if (TempData["PageModel"] != null)
                {
                    pageModel = JsonConvert.DeserializeObject <PageModel <SuggestionModel> >(TempData["PageModel"].ToString());
                }
                else
                {
                    int userId = 0;
                    if (!string.IsNullOrEmpty(User.Claims.FirstOrDefault(x => x.Type == "User.Id")?.Value))
                    {
                        userId = int.Parse(User.Claims.FirstOrDefault(x => x.Type == "User.Id")?.Value ?? "0");
                    }

                    var userModel = await userLogic.GetAsync(userId, configuration["MediaFolderPath"]);

                    SuggestionModel suggestionModel = new SuggestionModel
                                                      (
                        new Suggestion
                        (
                            0,
                            null,
                            null,
                            null,
                            false,
                            false,
                            DateTime.UtcNow,
                            userId,
                            new User
                            (
                                userModel.Id,
                                userModel.Account,
                                userModel.Password,
                                userModel.FullName,
                                (short)userModel.Role,
                                userModel.ImageName,
                                (short)userModel.Status
                            )

                        ),
                        configuration["MediaFolderPath"],
                        configuration["MediaFolderPath"]
                                                      );
                    await layoutModel.Refresh(suggestionLogic, int.Parse(configuration["DashboardTopSuggestionLimit"]), configuration["MediaFolderPath"]);

                    pageModel = new PageModel <SuggestionModel>
                                (
                        suggestionModel,
                        layoutModel
                                );
                }
                return(View("Edit", pageModel));
            }
            catch (Exception ex)
            {
                loggerFactory.CreateLogger(ex.GetType()).LogError($"{ex}\n\n");
                TempData["MessageType"] = MessageOptions.Danger;
                TempData["Message"]     = Text.An_error_occured;
            }
            if (!string.IsNullOrEmpty(layoutModel.ReturnUrl))
            {
                return(Redirect(layoutModel.ReturnUrl));
            }
            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> Edit(PageModel <SuggestionModel> pageModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    SuggestionModel newSuggestionModel = null;

                    TempData["MessageType"] = MessageOptions.Success;
                    TempData["Message"]     = Text.Save_done;

                    if (pageModel.DataModel.Id == 0)
                    {
                        newSuggestionModel = await suggestionLogic.AddAsync
                                             (
                            pageModel.DataModel,
                            configuration["MediaFolderPath"],
                            configuration["PrefixSuggestionFileName"]
                                             );
                    }
                    else
                    {
                        newSuggestionModel = await suggestionLogic.SetAsync
                                             (
                            pageModel.DataModel,
                            configuration["MediaFolderPath"],
                            configuration["MediaFolderTemporyPath"],
                            configuration["PrefixSuggestionImageName"],
                            configuration["PrefixSuggestionFileName"]
                                             );
                    }
                }
                else
                {
                    TempData["MessageType"] = MessageOptions.Warning;
                    TempData["Message"]     = "<ul>";
                    foreach (var v in ModelState.Values)
                    {
                        foreach (var vv in v.Errors)
                        {
                            TempData["Message"] += $"<li>{(!string.IsNullOrEmpty(vv.ErrorMessage) ? vv.ErrorMessage : vv.Exception.Message)}</li>";
                        }
                    }
                    TempData["Message"] += "</ul>";
                    return(View(pageModel));
                }
            }
            catch (KeyNotFoundException)
            {
                TempData["MessageType"] = MessageOptions.Warning;
                TempData["Message"]     = Text.Data_not_exists_or_deleted;
            }
            catch (MethodAccessException ex)
            {
                loggerFactory.CreateLogger(ex.GetType()).LogError($"{ex}\n\n");
                TempData["MessageType"] = MessageOptions.Warning;
                TempData["Message"]     = Text.Save_done_but_without_update_metadata;
            }
            catch (FileLoadException ex)
            {
                loggerFactory.CreateLogger(ex.GetType()).LogError($"{ex}\n\n");
            }
            catch (Exception ex)
            {
                loggerFactory.CreateLogger(ex.GetType()).LogError($"{ex}\n\n");
                TempData["MessageType"] = MessageOptions.Danger;
                TempData["Message"]     = Text.An_error_occured;
            }
            //if(pageModel.DataModel.Id == 0)
            //    return RedirectToAction("Create", (LayoutModel)pageModel);

            if (!string.IsNullOrEmpty(pageModel.ReturnUrl))
            {
                return(Redirect(pageModel.ReturnUrl));
            }
            return(RedirectToAction("Index"));
        }