public Organisation(
            User createdByUser,
            string name,
            string description,
            string website,
            MediaResource avatar,
            MediaResource background,
            IEnumerable<string> categories,
            DateTime createdDateTime,
            Group parentGroup)
            : base(createdByUser,
            name,
            createdDateTime,
            parentGroup)
        {
            Check.RequireNotNull(categories != null, "categories");

            InitMembers();

            SetOrganisationDetails(
                description,
                website,
                avatar,
                background,
                categories);

            ApplyEvent(new DomainModelCreatedEvent<Organisation>(this, createdByUser, this));
        }
Beispiel #2
0
        public User(
            string password,
            string email,
            string name,
            MediaResource avatar,
            string defaultLicence,
            string timezone,
            DateTime joined)
            : base()
        {
            InitMembers();

            Email = email;
            PasswordSalt = Guid.NewGuid();
            HashedPassword = GetHashedPassword(password);
            LastLoggedIn = DateTime.UtcNow;
            Joined = joined;

            SetDetails(
                name,
                avatar,
                string.Empty,
                defaultLicence,
                timezone);

            AddCallToAction("user-welcome");
            AddCallToAction("first-create-project-welcome");
            AddCallToAction("first-create-observation-welcome");
            AddCallToAction("first-record-welcome");
            AddCallToAction("project-explore-welcome");
            AddCallToAction("organisation-explore-welcome");

            ApplyEvent(new DomainModelCreatedEvent<User>(this, this, this));
        }
Beispiel #3
0
        public ObservationMedia(
            MediaResource mediaResource,
            string description,
            string licence,
            bool isPrimaryMedia)
            : base()
        {
            Check.RequireNotNull(mediaResource, "mediaResource");

            MediaResource = mediaResource;

            SetDetails(
                description,
                licence,
                isPrimaryMedia);
        }
        public Organisation UpdateDetails(User updatedByUser, string name, string description, string website,
                                          MediaResource avatar, MediaResource background, IEnumerable <string> categories)
        {
            Check.RequireNotNull(updatedByUser, "updatedByUser");
            Check.RequireNotNullOrWhitespace(name, "name");
            Check.RequireNotNull(categories != null, "categories");

            SetGroupDetails(name);

            SetOrganisationDetails(
                description,
                website,
                avatar,
                background,
                categories);

            ApplyEvent(new DomainModelUpdatedEvent <Organisation>(this, updatedByUser, this));

            return(this);
        }
        public bool Save(MediaResourceCreateCommand command, User createdByUser, out string failureReason, out MediaResource mediaResource)
        {
            failureReason = string.Empty;
            mediaResource = null;

            if (!_documentSession.Load<AppRoot>(Constants.AppRootId).DocumentServiceStatus)
            {
                failureReason = "Word documents and PDF files cannot be uploaded at the moment. Please try again later.";
                return false;
            }

            bool returnValue;

            try
            {
                //var extension = Path.GetExtension(command.OriginalFileName) ?? string.Empty;

                //var acceptedFileTypes = new List<string>()
                //                      {
                //                          "doc",
                //                          "docx",
                //                          "pdf"
                //                      };

                //if (acceptedFileTypes.Any(x => x.Contains(extension)))
                //{
                //    MakeDocumentMediaResourceFiles(mediaResource, command);
                //}

                returnValue = true;
            }
            catch (Exception exception)
            {
                _logger.ErrorException("Error saving document", exception);

                failureReason = "The file is corrupted or not a valid Word or PDF document and could not be saved. Please check the file and try again.";
                returnValue = false;
            }

            return returnValue;
        }
Beispiel #6
0
        public Team(
            User createdByUser,
            string name,
            string description,
            string website,
            MediaResource avatar,
            DateTime createdDateTime,
            Group parentGroup)
            : base(
                createdByUser,
                name,
                createdDateTime,
                parentGroup)
        {
            SetTeamDetails(
                description,
                website,
                avatar);

            ApplyEvent(new DomainModelCreatedEvent <Team>(this, createdByUser, this));
        }
Beispiel #7
0
        public UserProject(
            User createdByUser,
            string name,
            string description,
            string website,
            MediaResource avatar,
            MediaResource background,
            DateTime createdDateTime,
            Group parentGroup)
            : base(createdByUser,
            name,
            createdDateTime,
            parentGroup)
        {
            SetUserProjectDetails(
                description,
                website,
                avatar,
                background);

            ApplyEvent(new DomainModelCreatedEvent<UserProject>(this, createdByUser, this));
        }
Beispiel #8
0
        public UserProject(
            User createdByUser,
            string name,
            string description,
            string website,
            MediaResource avatar,
            MediaResource background,
            DateTime createdDateTime,
            Group parentGroup)
            : base(
                createdByUser,
                name,
                createdDateTime,
                parentGroup)
        {
            SetUserProjectDetails(
                description,
                website,
                avatar,
                background);

            ApplyEvent(new DomainModelCreatedEvent <UserProject>(this, createdByUser, this));
        }
Beispiel #9
0
 private void SetUserProjectDetails(string description, string website, MediaResource avatar, MediaResource background)
 {
     Description = description;
     Website = website;
     Avatar = avatar;
     Background = background;
 }
Beispiel #10
0
        public bool Save(MediaResourceCreateCommand command, User createdByUser, out string failureReason, out MediaResource mediaResource)
        {
            failureReason = string.Empty;
            mediaResource = null;

            if (!_documentSession.Load<AppRoot>(Constants.AppRootId).ImageServiceStatus)
            {
                failureReason = "Image files cannot be uploaded at the moment. Please try again later.";
                return false;
            }

            ImageUtility image = null;
            bool returnValue;

            try
            {
                var imageCreationTasks = new List<ImageCreationTask>();

                image = ImageUtility.Load(command.FileStream);

                if (command.Usage == "contribution")
                {
                    mediaResource = MakeContributionImage(
                        createdByUser,
                        image,
                        imageCreationTasks,
                        command);
                }
                else if (command.Usage == "avatar")
                {
                    mediaResource = MakeAvatarImage(
                        createdByUser,
                        image,
                        imageCreationTasks,
                        command);
                }
                else if (command.Usage == "background")
                {
                    mediaResource = MakeBackgroundImage(
                        createdByUser,
                        image,
                        imageCreationTasks,
                        command);
                }
                else
                {
                    throw new ArgumentException("The specified usage '" + command.Usage + "' is not recognised.");
                }

                image.Save(mediaResource, imageCreationTasks, _mediaFilePathFactory);

                returnValue = true;
            }
            catch (Exception exception)
            {
                _logger.ErrorException("Error saving images", exception);

                failureReason = "The file is corrupted or not a valid JPEG and could not be saved. Please check the file and try again.";
                returnValue = false;
            }
            finally
            {
                if (image != null)
                {
                    image.Cleanup();
                }
            }

            return returnValue;
        }
        public object Make(MediaResource mediaResource)
        {
            dynamic viewModel = new ExpandoObject();

            viewModel.Id = mediaResource.Id;
            viewModel.Key = mediaResource.Key;
            viewModel.MediaResourceType = mediaResource.MediaResourceType;
            viewModel.UploadedOn = mediaResource.UploadedOn;

            viewModel.User = new
                {
                    mediaResource.CreatedByUser.Id,
                    mediaResource.CreatedByUser.Name
                };

            if (mediaResource.Metadata != null)
            {
                viewModel.Metadata = mediaResource.Metadata.Select(x => new
                    {
                        x.Key,
                        x.Value
                    });
            }

            if (mediaResource is ImageMediaResource)
            {
                var imageMediaResource = mediaResource as ImageMediaResource;
                viewModel.Image = new ExpandoObject();

                if (imageMediaResource.Image.Original != null)
                {
                    var uri = _mediaFilePathFactory.MakeMediaUri(imageMediaResource.Image.Original.Uri);

                    viewModel.Image.Original = new
                        {
                            imageMediaResource.Image.Original.ExifData,
                            imageMediaResource.Image.Original.Filename,
                            imageMediaResource.Image.Original.Height,
                            imageMediaResource.Image.Original.MimeType,
                            imageMediaResource.Image.Original.Size,
                            Uri = uri,
                            imageMediaResource.Image.Original.Width
                        };
                }
                if (imageMediaResource.Image.Square50 != null) viewModel.Image.Square50 = MakeDerivedFile(imageMediaResource.Image.Square50);
                if (imageMediaResource.Image.Square100 != null) viewModel.Image.Square100 = MakeDerivedFile(imageMediaResource.Image.Square100);
                if (imageMediaResource.Image.Square200 != null) viewModel.Image.Square200 = MakeDerivedFile(imageMediaResource.Image.Square200);
                if (imageMediaResource.Image.Constrained240 != null) viewModel.Image.Constrained240 = MakeDerivedFile(imageMediaResource.Image.Constrained240);
                if (imageMediaResource.Image.Constrained480 != null) viewModel.Image.Constrained480 = MakeDerivedFile(imageMediaResource.Image.Constrained480);
                if (imageMediaResource.Image.Constrained600 != null) viewModel.Image.Constrained600 = MakeDerivedFile(imageMediaResource.Image.Constrained600);
                if (imageMediaResource.Image.Full640 != null) viewModel.Image.Full640 = MakeDerivedFile(imageMediaResource.Image.Full640);
                if (imageMediaResource.Image.Full800 != null) viewModel.Image.Full800 = MakeDerivedFile(imageMediaResource.Image.Full800);
                if (imageMediaResource.Image.Full1024 != null) viewModel.Image.Full1024 = MakeDerivedFile(imageMediaResource.Image.Full1024);
                if (imageMediaResource.Image.Small != null) viewModel.Image.Small = MakeDerivedFile(imageMediaResource.Image.Small);
                if (imageMediaResource.Image.Large != null) viewModel.Image.Large = MakeDerivedFile(imageMediaResource.Image.Large);

            }
            if (mediaResource is VideoMediaResource)
            {
                var videoMediaResource = mediaResource as VideoMediaResource;
                viewModel.Video = new ExpandoObject();

                if (videoMediaResource.Video.Original != null)
                {
                    viewModel.Video.Original = new
                    {
                        videoMediaResource.Video.Original.Height,
                        videoMediaResource.Video.Original.Provider,
                        videoMediaResource.Video.Original.ProviderData,
                        videoMediaResource.Video.Original.Uri,
                        videoMediaResource.Video.Original.VideoId,
                        videoMediaResource.Video.Original.Width
                    };
                }
                if (videoMediaResource.Video.OriginalImage != null)
                {
                    viewModel.Video.OriginalImage = new
                    {
                        videoMediaResource.Video.OriginalImage.ExifData,
                        videoMediaResource.Video.OriginalImage.Filename,
                        videoMediaResource.Video.OriginalImage.Height,
                        videoMediaResource.Video.OriginalImage.MimeType,
                        videoMediaResource.Video.OriginalImage.Size,
                        videoMediaResource.Video.OriginalImage.Uri,
                        videoMediaResource.Video.OriginalImage.Width
                    };
                }
                if (videoMediaResource.Video.Square50 != null) viewModel.Video.Square50 = MakeDerivedFile(videoMediaResource.Video.Square50);
                if (videoMediaResource.Video.Square100 != null) viewModel.Video.Square100 = MakeDerivedFile(videoMediaResource.Video.Square100);
                if (videoMediaResource.Video.Square200 != null) viewModel.Video.Square200 = MakeDerivedFile(videoMediaResource.Video.Square200);
                if (videoMediaResource.Video.Constrained240 != null) viewModel.Video.Constrained240 = MakeDerivedFile(videoMediaResource.Video.Constrained240);
                if (videoMediaResource.Video.Constrained480 != null) viewModel.Video.Constrained480 = MakeDerivedFile(videoMediaResource.Video.Constrained480);
                if (videoMediaResource.Video.Constrained600 != null) viewModel.Video.Constrained600 = MakeDerivedFile(videoMediaResource.Video.Constrained600);
                if (videoMediaResource.Video.Full640 != null) viewModel.Video.Full640 = MakeDerivedFile(videoMediaResource.Video.Full640);
                if (videoMediaResource.Video.Full800 != null) viewModel.Video.Full800 = MakeDerivedFile(videoMediaResource.Video.Full800);
                if (videoMediaResource.Video.Full1024 != null) viewModel.Video.Full1024 = MakeDerivedFile(videoMediaResource.Video.Full1024);
            }
            if (mediaResource is AudioMediaResource)
            {
                var audioMediaResource = mediaResource as AudioMediaResource;
                viewModel.Audio = new ExpandoObject();

                if (audioMediaResource.Audio.Original != null)
                {
                    viewModel.Audio.Original = new
                    {
                        audioMediaResource.Audio.Original.MimeType
                    };
                }

                if (audioMediaResource.Audio.Square50 != null) viewModel.Audio.Square50 = MakeDerivedFile(audioMediaResource.Audio.Square50);
                if (audioMediaResource.Audio.Square100 != null) viewModel.Audio.Square100 = MakeDerivedFile(audioMediaResource.Audio.Square100);
                if (audioMediaResource.Audio.Square200 != null) viewModel.Audio.Square200 = MakeDerivedFile(audioMediaResource.Audio.Square200);
                if (audioMediaResource.Audio.Constrained240 != null) viewModel.Audio.Constrained240 = MakeDerivedFile(audioMediaResource.Audio.Constrained240);
                if (audioMediaResource.Audio.Constrained480 != null) viewModel.Audio.Constrained480 = MakeDerivedFile(audioMediaResource.Audio.Constrained480);
                if (audioMediaResource.Audio.Constrained600 != null) viewModel.Audio.Constrained600 = MakeDerivedFile(audioMediaResource.Audio.Constrained600);
                if (audioMediaResource.Audio.Full640 != null) viewModel.Audio.Full640 = MakeDerivedFile(audioMediaResource.Audio.Full640);
                if (audioMediaResource.Audio.Full800 != null) viewModel.Audio.Full800 = MakeDerivedFile(audioMediaResource.Audio.Full800);
                if (audioMediaResource.Audio.Full1024 != null) viewModel.Audio.Full1024 = MakeDerivedFile(audioMediaResource.Audio.Full1024);
            }

            return viewModel;
        }
        private dynamic MakeAvatar(MediaResource mediaResource)
        {
            var avatar = mediaResource as ImageMediaResource;

            dynamic viewModelAvatar = new ExpandoObject();
            viewModelAvatar.Image = new ExpandoObject();

            if (avatar != null && avatar.Image != null)
            {
                if (avatar.Image.Original != null)
                {
                    var uri = _mediaFilePathFactory.MakeMediaUri(avatar.Image.Original.Uri);

                    viewModelAvatar.Image.Original = new
                    {
                        avatar.Image.Original.ExifData,
                        avatar.Image.Original.Filename,
                        avatar.Image.Original.Height,
                        avatar.Image.Original.MimeType,
                        avatar.Image.Original.Size,
                        Uri = uri,
                        avatar.Image.Original.Width
                    };
                }

                if (avatar.Image.Square50 != null) viewModelAvatar.Image.Square50 = MakeDerivedFile(avatar.Image.Square50);
                if (avatar.Image.Square100 != null) viewModelAvatar.Image.Square100 = MakeDerivedFile(avatar.Image.Square100);
                if (avatar.Image.Square200 != null) viewModelAvatar.Image.Square200 = MakeDerivedFile(avatar.Image.Square200);
            }

            return viewModelAvatar;
        }
Beispiel #13
0
 private void SetOrganisationDetails(string description, string website, MediaResource avatar,
     MediaResource background, IEnumerable<string> categories)
 {
     Description = description;
     Website = website;
     Avatar = avatar;
     Background = background;
     Categories = categories;
 }
        public bool Save(MediaResourceCreateCommand command, User createdByUser, out string failureReason, out MediaResource mediaResource)
        {
            failureReason = string.Empty;
            mediaResource = null;

            if (!_documentSession.Load<AppRoot>(Constants.AppRootId).VimeoVideoServiceStatus)
            {
                failureReason = "Vimeo video files cannot be imported at the moment. Please try again later.";
                return false;
            }

            bool returnValue;

            try
            {
                string apiUri = string.Format(_apiUriFormat, command.VideoId);

                dynamic data = GetVideoDataFromApi(apiUri);

                // Get thumbnail URI
                var thumbnailUri = (string)data[0]["thumbnail_large"];
                var videoWidth = (int) data[0]["width"];
                var videoHeight = (int)data[0]["height"];

                var imageCreationTasks = new List<ImageCreationTask>();

                using (var stream = new MemoryStream(new WebClient().DownloadData(thumbnailUri)))
                {
                    var image = ImageUtility.Load(stream);

                    mediaResource = _mediaResourceFactory.MakeContributionExternalVideo(
                        command.Key,
                        createdByUser,
                        command.UploadedOn,
                        string.Format(_uriFormat, command.VideoId),
                        "vimeo",
                        data,
                        command.VideoId,
                        ImageDimensions.MakeRectangle(videoWidth, videoHeight),
                        thumbnailUri,
                        image.GetDimensions(),
                        MediaTypeUtility.GetStandardMimeTypeForMimeType(image.GetMimeType()),
                        GetVideoMetadata(data, command.VideoId),
                        imageCreationTasks);

                    image.Save(mediaResource, imageCreationTasks, _mediaFilePathFactory);

                    image.Cleanup();
                }

                returnValue = true;
            }
            catch (Exception exception)
            {
                _logger.ErrorException("Error saving video", exception);

                failureReason = "The video cannot be retrieved from Vimeo. Please check the video and try again.";
                returnValue = false;
            }

            return returnValue;
        }
Beispiel #15
0
        public virtual User UpdateDetails(string name, string description, MediaResource avatar, string defaultLicence, string timezone)
        {
            SetDetails(
                name,
                avatar,
                description,
                defaultLicence,
                timezone);

            ApplyEvent(new DomainModelUpdatedEvent<User>(this, this, this));

            return this;
        }
 private string MakeUri(MediaResource mediaResource, string storedRepresentation, string mimeType)
 {
     return _mediaFilePathFactory.MakeRelativeMediaFileUri(mediaResource.Id, storedRepresentation, MediaTypeUtility.GetStandardExtensionForMimeType(mimeType));
 }
        public bool Save(MediaResourceCreateCommand command, User createdByUser, out string failureReason, out MediaResource mediaResource)
        {
            failureReason = string.Empty;
            mediaResource = null;

            if (!_documentSession.Load<AppRoot>(Constants.AppRootId).YouTubeVideoServiceStatus)
            {
                failureReason = "Youtube video files cannot be imported at the moment. Please try again later.";
                return false;
            }

            bool returnValue;

            try
            {
                string apiUri = string.Format(_apiUriFormat, command.VideoId);

                JObject data = GetVideoDataFromApi(apiUri);

                // Get thumbnail URI
                var mediaThumbnails = data["entry"]["media$group"]["media$thumbnail"];
                var mediaThumbnail = mediaThumbnails.Single(x => (string)x["yt$name"] == "hqdefault");
                var thumbnailUri = (string)mediaThumbnail["url"];

                var imageCreationTasks = new List<ImageCreationTask>();

                using (var stream = new MemoryStream(new WebClient().DownloadData(thumbnailUri)))
                {
                    var image = ImageUtility.Load(stream);

                    mediaResource = _mediaResourceFactory.MakeContributionExternalVideo(
                        command.Key,
                        createdByUser,
                        command.UploadedOn,
                        string.Format(_uriFormat, command.VideoId),
                        "youtube",
                        data,
                        command.VideoId,
                        ImageDimensions.MakeRectangle(1024, 576), // As at 08/2012, Youtube states that videos are encoded in 16:9 ratio. 1024x576px is the max size we present in Bowerbird at that ratio
                        thumbnailUri,
                        image.GetDimensions(),
                        MediaTypeUtility.GetStandardMimeTypeForMimeType(image.GetMimeType()),
                        GetVideoMetadata(data, command.VideoId),
                        imageCreationTasks);

                    image.Save(mediaResource, imageCreationTasks, _mediaFilePathFactory);

                    image.Cleanup();
                }

                returnValue = true;
            }
            catch (Exception exception)
            {
                _logger.ErrorException("Error saving video", exception);

                failureReason = "The video cannot be retrieved from Youtube. Please check the video and try again.";
                returnValue = false;
            }

            return returnValue;
        }
Beispiel #18
0
        public UserProject UpdateDetails(User updatedByUser, string name, string description, string website, MediaResource avatar, MediaResource background)
        {
            Check.RequireNotNull(updatedByUser, "updatedByUser");
            Check.RequireNotNullOrWhitespace(name, "name");
            Check.RequireNotNullOrWhitespace(name, "avatar");
            Check.RequireNotNullOrWhitespace(name, "background");

            SetGroupDetails(name);

            SetUserProjectDetails(
                description,
                website,
                avatar,
                background);

            ApplyEvent(new DomainModelUpdatedEvent <Group>(this, updatedByUser, this));

            return(this);
        }
Beispiel #19
0
 private void SetUserProjectDetails(string description, string website, MediaResource avatar, MediaResource background)
 {
     Description = description;
     Website     = website;
     Avatar      = avatar;
     Background  = background;
 }
Beispiel #20
0
        public UserProject UpdateDetails(User updatedByUser, string name, string description, string website, MediaResource avatar, MediaResource background)
        {
            Check.RequireNotNull(updatedByUser, "updatedByUser");
            Check.RequireNotNullOrWhitespace(name, "name");
            Check.RequireNotNullOrWhitespace(name, "avatar");
            Check.RequireNotNullOrWhitespace(name, "background");

            SetGroupDetails(name);

            SetUserProjectDetails(
                description,
                website,
                avatar,
                background);

            ApplyEvent(new DomainModelUpdatedEvent<Group>(this, updatedByUser, this));

            return this;
        }
Beispiel #21
0
        public Organisation UpdateDetails(User updatedByUser, string name, string description, string website,
            MediaResource avatar, MediaResource background, IEnumerable<string> categories)
        {
            Check.RequireNotNull(updatedByUser, "updatedByUser");
            Check.RequireNotNullOrWhitespace(name, "name");
            Check.RequireNotNull(categories != null, "categories");

            SetGroupDetails(name);

            SetOrganisationDetails(
                description,
                website,
                avatar,
                background,
                categories);

            ApplyEvent(new DomainModelUpdatedEvent<Organisation>(this, updatedByUser, this));

            return this;
        }
Beispiel #22
0
 private void SetTeamDetails(string description, string website, MediaResource avatar)
 {
     Description = description;
     Website     = website;
     Avatar      = avatar;
 }
Beispiel #23
0
        public Team UpdateDetails(User updatedByUser, string name, string description, string website, MediaResource avatar)
        {
            Check.RequireNotNull(updatedByUser, "updatedByUser");
            Check.RequireNotNullOrWhitespace(name, "name");

            SetGroupDetails(name);

            SetTeamDetails(
                description,
                website,
                avatar);

            ApplyEvent(new DomainModelUpdatedEvent <Team>(this, updatedByUser, this));

            return(this);
        }
Beispiel #24
0
 private void SetDetails(string name, MediaResource avatar, string description, 
     string defaultLicence, string timezone)
 {
     Name = name;
     Avatar = avatar;
     Description = description;
     DefaultLicence = defaultLicence;
     Timezone = timezone;
 }