Exemplo n.º 1
0
        public async Task <ActionResult> PrintCards(int projectid, string plugin, string characterIds)
        {
            var characters = await CharacterRepository.GetCharacters(projectid, characterIds.UnCompressIdList());

            var project = await GetProjectFromList(projectid, characters);

            var pluginInstance = PluginFactory.GetOperationInstance <IPrintCardPluginOperation>(project, plugin);

            if (pluginInstance == null)
            {
                return(HttpNotFound());
            }

            if (!pluginInstance.AllowPlayerAccess)
            {
                var error = AsMaster(project);
                if (error != null)
                {
                    return(error);
                }
            }
            else
            {
                //TODO display correct errors
                if (characters.Any(c => !c.HasAnyAccess(CurrentUserId)))
                {
                    return(new  HttpUnauthorizedResult());
                }
            }

            var cards = characters.SelectMany(c => PluginFactory.PrintForCharacter(pluginInstance, c));

            return(View(cards));
        }