public async Task <IActionResult> Get(int id) { // TODO: need to check if user can get unpublished or not return(await TryOk(async() => { var program = await _slideDeckProgramRepo.GetFirst(id); var activeAvatar = await _userAvatar.GetActiveInContext(); if (program.AccessLevel == Shared.Models.Enums.AccessLevel.Premium && (_userService.GetAccessLevel() != Shared.Models.Enums.UserRole.Premium || activeAvatar.PersonalProgramAccess.Count(x => x.SlideDeckProgramId == program.Id) == 0)) { // does not have access. return dummy deck! var dummy = await RepoBase.Get(10); dummy.Title = program.Title; dummy.Description = program.Description + Environment.NewLine + Environment.NewLine + dummy.Description; return dummy; } return program; })); //return await Get<SlideDeckProgram>(_slideDeckProgramRepo.GetFirst(id)); }
public override async Task <Tuple <UserAccessSlideDeckProgram, string> > SaveAndGetEntity(UserAccessSlideDeckProgram ua) { if (ua.UserAvatar != null) { ua.UserAvatarId = ua.UserAvatar.Id; ua.UserAvatar = null; } if (ua.SlideDeckProgram != null) { ua.SlideDeckProgramId = ua.SlideDeckProgram.Id; ua.SlideDeckProgram = null; } if (ua.User != null) { ua.UserId = ua.User.Id; ua.User = null; } var sr = await base.SaveAndGetEntity(ua); if (sr.Item1 != null) { var slideDeckProgram = await _slideDeckProgramRepo.GetFirst(ua.SlideDeckProgramId); if (slideDeckProgram != null) { sr.Item1.SlideDeckProgram = slideDeckProgram; } else { await base.Remove(sr.Item1); throw new Exception($"SlideDeckProgram with Id {ua.SlideDeckProgramId} doesn't exist"); } } return(sr); }