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));
        }
Пример #2
0
        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);
        }