/// <summary>
        ///     Saves the media.
        /// </summary>
        /// <param name="command">The command.</param>
        /// <param name="single">The single.</param>
        private void SaveMedia(CreateMomentoParameters command, Momento single)
        {
            command.Media.ForEach(m => m.MomentoId = single.Id);
            List <Schema.MomentoMedia> media =
                command.Media.ConvertAll(Mapper.DynamicMap <CreateMomentoMediaParameters, Schema.MomentoMedia>);

            using (ITransaction transaction = _session.BeginTransaction())
            {
                foreach (Schema.MomentoMedia momentoMedia in media)
                {
                    momentoMedia.Momento = single;
                    _session.Save(momentoMedia);
                }

                transaction.Commit();
            }
        }
        /// <summary>
        ///     Saves the momento.
        /// </summary>
        /// <param name="command">The command.</param>
        /// <returns>Momento.</returns>
        private Momento SaveMomento(CreateMomentoParameters command)
        {
            Momento momento = _mapper.Map <CreateMomentoParameters, Momento>(command);

            momento.UploadedBy = command.Username;
            momento.InternalId = Guid.NewGuid();
            momento.Visibility = MomentoVisibility.Public;

            using (ITransaction trans = _session.BeginTransaction())
            {
                _session.Save(momento);
                _session.Save(new MomentoUser {
                    Momento = momento, Username = command.Username
                });

                trans.Commit();
            }

            return(momento);
        }
        /// <summary>
        ///     Creates the specified parameters.
        /// </summary>
        /// <param name="parameters">The parameters.</param>
        public void Create(CreateMomentoParameters parameters)
        {
            Momento single = SaveMomento(parameters);

            SaveMedia(parameters, single);
        }