コード例 #1
0
        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);
        }
コード例 #2
0
        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"));
        }