public bool Update(PostVM viewModel) { var Question = db.Questions.SingleOrDefault(q => q.Id == viewModel.questionId && q.PostId == viewModel.PostId); Question.QuesetionTitle = viewModel.QuesetionTitle; Question.PhotoUrl = ImageUpload(viewModel.QPhotoFile).FirstOrDefault(); Question.IsRequired = viewModel.IsRequired; Question.IsRankeditorChoice = viewModel.IsRankeditorChoice; Question.EndDate = viewModel.EndDate; Question.AnswerTypeId = db.Answer_Types.Where(x => x.Type.Equals(viewModel.AnswerType)).Select(a => a.Id).FirstOrDefault(); // comunity string[] communiyIds = viewModel.ComunitieIds.Split(new Char[] { ';' }); var qCommunity_old = db.Questions_Comunities.Where(x => x.QuestionId == viewModel.questionId); db.Questions_Comunities.RemoveRange(qCommunity_old); for (int c = 0; c < communiyIds.Length; c++) { var qCommunity = new Questions_Comunities(); qCommunity.QuestionId = viewModel.questionId; qCommunity.ComunitieId = int.Parse(communiyIds[c]); qCommunity.AddingDate = DateTime.Now; //fill question community into question Question.Questions_Comunities.Add(qCommunity); } //var comunityList = Question.Questions_Comunities.ToList(); //if (communiyIds.Length > comunityList.Count) //{ // for (int i = 0; i < comunityList.Count; i++) // { // comunityList[i].ComunitieId = int.Parse(communiyIds[i]); // } // for (int i = comunityList.Count; i < communiyIds.Length; i++) // comunityList.Add(new Questions_Comunities() // { QuestionId = viewModel.questionId, // ComunitieId =int.Parse(communiyIds[i]), // AddingDate =DateTime.Now // }); //} //else //{ // for (int i = 0; i < communiyIds.Length; i++) // { // comunityList[i].ComunitieId = int.Parse(communiyIds[i]); // } // var deletedIDs = Question.Questions_Comunities.OrderByDescending(p => p.Id).Take(comunityList.Count - communiyIds.Length); // foreach (var item in deletedIDs) // { // Question.Questions_Comunities.Remove(item); // } //} //Question.Questions_Comunities = comunityList; //fill question answers string[] aValues = viewModel.answerValues.Split(new Char[] { ';' }); List <string> answerImgs = ImageUpload(viewModel.answerImgs); var oldOptions = Question.Question_Answer_Values.ToList(); for (int a = 0; a < aValues.Length; a++) { oldOptions[a].AnswerValue = aValues[a]; if (answerImgs[a] != null) { oldOptions[a].PhotoUrl = answerImgs[a]; } else { oldOptions[a].PhotoUrl = null; } //fill question answers to question Question.Question_Answer_Values = oldOptions; } try { db.SaveChanges(); return(true); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { string err = string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { string errr = string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); throw new Exception(errr); } } return(false); } catch (System.Data.Entity.Infrastructure.DbUpdateException e) { string err = e.Message; return(false); } }
// POST: api/PostApi public bool Post(PostVM viewModel) { var user = db.AspNetUsers.Find(viewModel.UserId); // file Post info var Post_Info = new Post_Info(); Post_Info.CreationDate = viewModel.CreationDate; Post_Info.EndDate = viewModel.PostEndDate; Post_Info.UserId = viewModel.UserId; Post_Info.AspNetUser = user; // fill question info var Question = new Question(); Question.PhotoUrl = ImageUpload(viewModel.QPhotoFile).FirstOrDefault(); Question.AnswerTypeId = db.Answer_Types.Where(t => t.Type == viewModel.AnswerType).FirstOrDefault().Id; Question.QuesetionTitle = viewModel.QuesetionTitle; Question.IsRequired = viewModel.IsRequired; Question.EndDate = viewModel.EndDate; Question.IsRankeditorChoice = viewModel.IsRankeditorChoice; //fill question answers string[] aValues = viewModel.answerValues.Split(new Char[] { ';' }); var answerImgs = viewModel.answerImgs; List <string> optionsImgs = ImageUpload(answerImgs); for (int a = 0; a < aValues.Length; a++) { var answerValues = new Question_Answer_Values(); answerValues.OptionNum = a; answerValues.AnswerValue = aValues[a]; if (optionsImgs.Count != 0 && optionsImgs.Count >= a) { answerValues.PhotoUrl = optionsImgs[a]; } //fill question answers to question Question.Question_Answer_Values.Add(answerValues); } //fill question community var qCommunity = new Questions_Comunities(); if (!viewModel.ComunitieIds.Equals(16)) { string[] communiyIds = viewModel.ComunitieIds.Split(new Char[] { ';' }); for (int c = 0; c < communiyIds.Length; c++) { qCommunity.ComunitieId = int.Parse(communiyIds[c]); qCommunity.AddingDate = DateTime.Now; //fill question community into question } } else { qCommunity.ComunitieId = 16; qCommunity.AddingDate = DateTime.Now; //fill question community into question } Question.Questions_Comunities.Add(qCommunity); //fill question into the post Post_Info.Questions.Add(Question); db.Post_Info.Add(Post_Info); try { db.SaveChanges(); return(true); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { string err = string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { string errr = string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); throw new Exception(errr); } } return(false); } catch (System.Data.Entity.Infrastructure.DbUpdateException e) { string err = e.Message; return(false); } }