     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

    <?php
    /**
     * @model Transcriptions
     * http://ap.bandwidth.com/docs/rest-api/recordingsidtranscriptions/
     * under Transcriptions
     *
     *
     * Provides recording transcriptions
     */
    namespace Catapult;

    final class Transcription extends GenericResource {

        /**
         * transcriptions need a valid
         * recording. Without fail, this
         * while not checked for authenticity
         * should be in the from r-xxx
         *
         * Init Forms:
         *
         * GET
         * Transcription('recording-id', 'transcription-id')
         * Transcription('recording-id')
         * Transcription()
         *
         * POST
         * Transcription('recording-id', array)
         * Transcription(array)
         */
        public function __construct() {
            $data = Ensure::Input(func_get_args());
            parent::_init($data, new DependsResource(
                array(
                    array("term" => "recordings", "plural" => true)
                )),
                new LoadsResource(
                    array("primary" => "GET", "id" => "id",
                    "init" => array("recordingId"),
                    "silent" => true, "params")
                ),
                new SchemaResource(
                    array("fields" => array('transcriptionUri', 'textSize', 'text', 'status',
                   'textUrl','recordingId', 'state','eventType', 'transcriptionId'),
                   "needs" => array("id"))
                )
            );
        }

        /**
         * Patch for collection
         * based objects we need the
         * path to be loaded seperatly
         * and make sure the recordingId
         * is preserved
         */
        public function load() {
          $data = Ensure::Input(func_get_args());
          $data = $data->get();
          return parent::load($data, new PathResource($this, array(
            "recordings" => $data['recordingId'],
            "transcriptions" => ""
          )));
        }

        /**
         *
         * treat transcriptions
         * create/0 different
         * as we need the path
         */
        public function create() {
          $data = Ensure::Input(func_get_args());
          $data = $data->get();
          if (!isset($data['recordingId'])) {
            $data['recordingId'] = "";
          }

          return parent::create($data,
            new RemoveResource($this,array("recordingId"),
            new PathResource($this, array(
              "recordings" => $data['recordingId'],
              "transcriptions" => ""
            )
           )
          ));
        }
    }