public SnippetDTO CreateSnippet(SnippetDTO snippet, LanguageDTO language, UserDTO user,
                                        IEnumerable<FileDTO> files,
                                        IEnumerable<HyperlinkDTO> links)
        {
            SnippetDTO returnDTO = snippet;

            if (snippet.Data == null || (language == null || language.Id <= 0)) return null;

            if (snippet.Language_Id > 0)
            {
                snippet.Language_Id = language.Id;
                snippet.PreviewData = GetPreviewData(snippet.Data);
                snippet.LastModified = DateTime.UtcNow;
                snippet.User_Id = user.Id;
                snippet.User_FormsAuthId = user.FormsAuthId;
            }

            int result = _snippetOperationsEngine.CreateNewSnippet(snippet);
            if (result > 0)
            {
                returnDTO.Id = snippet.Id;
                returnDTO.Guid = snippet.Guid;

                // Snippet creation was successult. Now we have a SnippetId and can insert
                // any hyperlinks or files

                // Hyperlinks first
                if (links != null && links.Any())
                {
                    foreach (HyperlinkDTO hyperlinkDTO in links)
                    {
                        // Update the hyperlink's Snippet Id since we successfully sved it
                        hyperlinkDTO.Snippet_Id = result;
                        int createHyperlinkResponse = _snippetOperationsEngine.CreateNewHyperlink(hyperlinkDTO);
                        if (createHyperlinkResponse <= 0)
                            Logger.LogInfo(
                                string.Format("Failed to create hyperlink uri {0} for snippet id {1}", hyperlinkDTO.Uri,
                                              hyperlinkDTO.Snippet_Id), LogType.Notify);
                    }
                }

                // Files now
                if (files != null && files.Any())
                {
                    foreach (FileDTO fileDTO in files)
                    {
                        // Update the SnippetId with newly created id
                        fileDTO.Snippet_Id = result;
                        int createFileResponse = _snippetOperationsEngine.CreateNewFile(fileDTO);
                        if (createFileResponse <= 0)
                            Logger.LogInfo(string.Format("Failed to create new file {0} for snippet id {1}", fileDTO.Id,
                                                         fileDTO.Snippet_Id), LogType.Notify);
                    }
                }
            }

            return returnDTO;
        }
        public SnippetDTO CreateSnippet(SnippetDTO snippet, LanguageDTO language, UserDTO user,
                                        IEnumerable<FileDTO> files,
                                        IEnumerable<HyperlinkDTO> links)
        {
            SnippetDTO newSnippet = SnippetManager.CreateSnippet(snippet, language, user, files, links);

            return newSnippet;
        }
        public UserDTO UserDetails(int userId, Guid userGuid)
        {
            UserDTO result = null;

            User response = _userOperationsEngine.GetUserDetails(userId, userGuid);
            if (response != null)
            {
                result = new UserDTO
                             {
                                 Id = response.Id,
                                 FormsAuthId = response.FormsAuthId,
                                 LoginName = response.LoginName,
                                 Email = response.Email,
                                 AvatarImage = response.AvatarImage
                             };
            }

            return result;
        }
        public bool UpdateUserDetails(UserDTO userDto)
        {
            var userResult = new User
                                 {
                                     Id = userDto.Id,
                                     FormsAuthId = userDto.FormsAuthId,
                                     LoginName = userDto.LoginName,
                                     AvatarImage = userDto.AvatarImage,
                                     Email = userDto.Email
                                 };

            return UserOperationsEngine.UpdateUserDetails(userResult);
        }