public async Task <SuggestionDetailVM> GetWithAdditionalData(Guid?id) { SuggestionDetailVM vm = new SuggestionDetailVM(); vm.Rec = new SuggestionSaveVM(); vm.Categories = _con.Set <Category>().Where(a => !a.IsDeleted) .Select(s => new SelectListVM() { Id = s.Id, Text = s.Name }).OrderBy(o => o.Text).AsNoTracking().ToList(); if (id.IsNullOrEmpty()) { return(vm); } var record = await Repository.GetByIDAysnc(id.Value); if (record != null) { var users = _con.Set <User>().AsNoTracking().Select(s => new { s.Id, s.UserName }).ToList(); vm.Id = id.Value; vm.Rec = _mapper.Map <SuggestionSaveVM>(record); vm.Rec.CreateByName = users.Any(a => a.Id == record.CreateBy) ? users.Where(a => a.Id == record.CreateBy).Select(s => s.UserName).FirstOrDefault() : ""; //Load Comments vm.SuggestionComments = await _mapper.ProjectTo <SuggestionCommentVM>(_con.Set <SuggestionComment>().AsNoTracking().Where(a => a.SuggestionId == id.Value) .OrderByDescending(o => o.CreateDT)).ToListAsync(); foreach (var item in vm.SuggestionComments) { item.CreateByName = users.Any(a => a.Id == item.CreateBy) ? users.Where(a => a.Id == item.CreateBy).Select(s => s.UserName).FirstOrDefault() : ""; } //Get Reactions vm.SuggestionReactions = await _mapper.ProjectTo <SuggestionReactionVM>(_con.Set <SuggestionReaction>().AsNoTracking().Where(a => a.SuggestionId == id.Value) .OrderByDescending(o => o.CreateDT)).ToListAsync(); foreach (var item in vm.SuggestionReactions) { item.CreateByName = users.Any(a => a.Id == item.CreateBy) ? users.Where(a => a.Id == item.CreateBy).Select(s => s.UserName).FirstOrDefault() : ""; } } return(vm); }
public async Task <ActionResult> Detail(Guid id, SuggestionDetailVM vm) { if (!ModelState.IsValid) { vm.Categories = _categoryService.GetSelectList(); return(View(vm)); } APIResultVM result = new APIResultVM(); var user = await _userManager.FindByNameAsync(User.Identity.Name); if (id.IsNull() || id == Guid.Empty) { result = await _service.AddAsync(vm.Rec, user.Id); } else { result = await _service.UpdateAsync(id, vm.Rec, user.Id); } if (!result.IsSuccessful) { if (result.Messages.Any()) { foreach (var error in result.Messages) { ModelState.AddModelError("GeneralError", error); } } return(View(vm)); } return(RedirectToAction("Index", "Home")); }