public IActionResult CreateHighlight(HighlightResource highlightResource)
        {
            if (highlightResource == null)
            {
                ProblemDetails problem = new ProblemDetails
                {
                    Title    = "Failed creating highlight.",
                    Detail   = "The highlight resource is null.",
                    Instance = "2206D5EC-9E20-44A7-A729-0205BEA994E5"
                };
                return(BadRequest(problem));
            }

            Highlight highlight = mapper.Map <HighlightResource, Highlight>(highlightResource);

            try
            {
                highlightService.Add(highlight);
                highlightService.Save();
                return(Created(nameof(CreateHighlight), mapper.Map <Highlight, HighlightResourceResult>(highlight)));
            } catch (DbUpdateException e)
            {
                Log.Logger.Error(e, "Database exception");

                ProblemDetails problem = new ProblemDetails
                {
                    Title    = "Failed Saving highlight.",
                    Detail   = "Failed saving the highlight to the database.",
                    Instance = "764E41C3-06A5-47D6-9642-C9E8A0B7CFC7"
                };
                return(BadRequest(problem));
            }
        }
        public async Task <IActionResult> CreateHighlight(HighlightResource highlightResource)
        {
            if (highlightResource == null)
            {
                ProblemDetails problem = new ProblemDetails
                {
                    Title    = "Failed creating highlight.",
                    Detail   = "The highlight resource is null.",
                    Instance = "2206D5EC-9E20-44A7-A729-0205BEA994E5"
                };
                return(BadRequest(problem));
            }

            Highlight highlight = mapper.Map <HighlightResource, Highlight>(highlightResource);
            File      file      = null;

            if (highlightResource.ImageId != null)
            {
                file = await fileService.FindAsync(highlightResource.ImageId.Value);

                if (file == null)
                {
                    ProblemDetails problem = new ProblemDetails
                    {
                        Title    = "File was not found.",
                        Detail   = "The specified file was not found while creating highlight.",
                        Instance = "F4AF3D06-DD74-40E0-99BB-8E1183A6A734"
                    };
                    return(NotFound(problem));
                }
            }

            Project project = await projectService.FindWithUserCollaboratorsAndInstitutionsAsync(highlightResource.ProjectId);

            if (project == null)
            {
                ProblemDetails problem = new ProblemDetails
                {
                    Title    = "Project was not found.",
                    Detail   = "The specified project was not found while creating highlight.",
                    Instance = "A6DBEE27-0363-479B-B099-A467D4B2CF00"
                };
                return(NotFound(problem));
            }

            highlight.Image   = file;
            highlight.Project = project;

            try
            {
                highlightService.Add(highlight);
                highlightService.Save();
                return(Created(nameof(CreateHighlight), mapper.Map <Highlight, HighlightResourceResult>(highlight)));
            } catch (DbUpdateException e)
            {
                Log.Logger.Error(e, "Database exception");

                ProblemDetails problem = new ProblemDetails
                {
                    Title    = "Failed Saving highlight.",
                    Detail   = "Failed saving the highlight to the database.",
                    Instance = "764E41C3-06A5-47D6-9642-C9E8A0B7CFC7"
                };
                return(BadRequest(problem));
            }
        }