public IActionResult UpdateIdeation(int id, NewIdeationDto updatedIdeationValues)
        {
            try
            {
                _unitOfWorkManager.StartUnitOfWork();
                Ideation updatedIdeation = _ideationManager.ChangeIdeation(
                    id,
                    updatedIdeationValues.Title,
                    updatedIdeationValues.ProjectPhaseId);
                _unitOfWorkManager.EndUnitOfWork();

                if (updatedIdeation == null)
                {
                    return(BadRequest("Something went wrong while updating the ideation."));
                }

                return(Ok(_mapper.Map <IdeationDto>(updatedIdeation)));
            }
            catch (ValidationException ve)
            {
                return(UnprocessableEntity($"Invalid input data: {ve.ValidationResult.ErrorMessage}"));
            }
            catch (ArgumentException e)
            {
                switch (e.ParamName)
                {
                case "id":
                    return(NotFound(e.Message));

                case "projectPhaseId":
                    return(UnprocessableEntity(e.Message));

                default:
                    return(BadRequest(e.Message));
                }
            }
        }
        public async Task <IActionResult> PostNewIdeation([FromForm] NewIdeationDto ideation, [FromRoute] string orgId)
        {
            if (ideation.Texts.IsNullOrEmpty() && ideation.Images.IsNullOrEmpty())
            {
                return(BadRequest("Either images or text content should be provided."));
            }

            try
            {
                // UoW is started here to make sure the request either fails or succeeds fully
                _unitOfWorkManager.StartUnitOfWork();

                Ideation createdIdeation = _ideationManager.AddIdeation(
                    ideation.Title,
                    ideation.ProjectPhaseId);

                foreach (var video in ideation.Videos)
                {
                    string imgLocation = await _fileService.ConvertFileToLocation(video);

                    _ideationManager.AddFieldToIdeation(FieldType.Video, imgLocation, createdIdeation.IdeationId);
                }

                foreach (var image in ideation.Images)
                {
                    string imgLocation = await _fileService.ConvertFileToLocation(image);

                    _ideationManager.AddFieldToIdeation(FieldType.Picture, imgLocation, createdIdeation.IdeationId);
                }

                foreach (var textfield in ideation.Texts)
                {
                    _ideationManager.AddFieldToIdeation(FieldType.Text, textfield, createdIdeation.IdeationId);
                }

                foreach (var location in ideation.Locations)
                {
                    _ideationManager.AddFieldToIdeation(FieldType.Location, location, createdIdeation.IdeationId);
                }

                foreach (var link in ideation.Links)
                {
                    _ideationManager.AddFieldToIdeation(FieldType.Link, link, createdIdeation.IdeationId);
                }

                _unitOfWorkManager.EndUnitOfWork();

                return(CreatedAtAction(
                           "GetIdeation",
                           new { orgId, id = createdIdeation.IdeationId },
                           _mapper.Map <IdeationDto>(createdIdeation)));
            }
            catch (ValidationException ve)
            {
                return(UnprocessableEntity($"Invalid input data: {ve.ValidationResult.ErrorMessage}"));
            }
            catch (Exception e)
            {
                return(BadRequest($"Something went wrong in creating the ideation: {e.Message}."));
            }
        }