コード例 #1
0
        public JsonResult Remove(int id = -1)
        {
            var result = new JsonOperationResponse
            {
                Successful = false
            };

            try
            {
                using (var db = new KbVaultContext())
                {
                    db.KbUsers.Remove(db.KbUsers.First(u => u.Id == id));
                    db.SaveChanges();
                    result.Successful = true;
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #2
0
        public JsonResult Edit(string pk, string value)
        {
            var result = new JsonOperationResponse();

            try
            {
                using (var db = new KbVaultContext())
                {
                    var tagId = Convert.ToInt64(pk);
                    var tag   = db.Tags.First(t => t.Id == tagId);
                    if (tag != null)
                    {
                        tag.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                        tag.Name   = value;
                        db.SaveChanges();
                        result.Successful = true;
                        return(Json(result));
                    }
                }

                return(null);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #3
0
        public JsonResult Remove(int id = -1)
        {
            var result = new JsonOperationResponse
            {
                Successful = false
            };

            try
            {
                using (var db = new KbVaultContext())
                {
                    // Update all articles owned by deleted user
                    var admin = db.KbUsers.First(a => a.Role == "Admin").Id;
                    KBVaultHelperFunctions.UpdateArticlesOwner(id, admin);
                    //KBVaultHelperFunctions.UpdateActivitiesOwner(id);

                    // Delete user after updating articles
                    db.KbUsers.Remove(db.KbUsers.First(u => u.Id == id));

                    db.SaveChanges();
                    result.Successful = true;
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #4
0
        public JsonResult Like(int articleId)
        {
            //bool isAjaxCall = _actionContextAccessor.ActionContext.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest";
            //bool isAjaxCall = _httpContextAccessor.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest";
            var result = new JsonOperationResponse();
            //if (isAjaxCall == true)
            //{
            //using (var db = new KbVaultContext(_config))
            //{
            var article = _context.Articles.FirstOrDefault(a => a.Id == articleId);

            if (article == null)
            {
                //result.ErrorMessage = Resources.ErrorMessages.ArticleNotFound;
                result.ErrorMessage = "ArticleNotFound";
            }
            else
            {
                article.Likes++;
                _context.SaveChanges();
                result.Successful   = true;
                result.ErrorMessage = "ArticleLikeSuccess"; //Resources.UIResources.ArticleLikeSuccess;
            }
            //}
            //}

            return(Json(result));
        }
コード例 #5
0
ファイル: TagController.cs プロジェクト: lulzzz/kbvault
        public JsonResult Remove(int id = -1)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            result.Successful = false;
            try
            {
                using (var db = new KbVaultContext())
                {
                    Tag tag = db.Tags.First(t => t.Id == id);
                    if (tag != null)
                    {
                        tag.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                        db.Tags.Remove(tag);
                        TagRepository.RemoveTagFromArticles(id);
                        db.SaveChanges();
                        result.Successful   = true;
                        result.ErrorMessage = UIResources.TagListRemoveSuccessful;
                    }
                    else
                    {
                        result.ErrorMessage = ErrorMessages.TagNotFound;
                    }
                }
                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #6
0
ファイル: ActivityController.cs プロジェクト: lulzzz/kbvault
 public JsonResult Get(ActivityDataTablesPostModel model)
 {
     try
     {
         int length = model.length;
         int page   = model.start / length;
         JsonOperationResponse result = new JsonOperationResponse();
         int recordCount = 0;
         using (var db = new KbVaultContext())
         {
             recordCount = db.Activities.Count();
             db.Configuration.LazyLoadingEnabled = false;
             var activities = db.Activities.Include("KbUser")
                              .OrderByDescending(a => a.ActivityDate)
                              .Skip((page) * length)
                              .Take(length).AsEnumerable()
                              .Select(a => new ActivityViewModel
             {
                 ActivityDate = a.ActivityDate.ToString("dd/MM/yyyy H:mm"),
                 Operation    = a.Operation,
                 Text         = a.Information,
                 User         = a.KbUser.Name + " " + a.KbUser.LastName
             }).ToList();
             result.Successful = true;
             result.Data       = activities;
             return(Json(new { recordsFiltered = recordCount, recordsTotal = recordCount, Successfull = result.Successful, ErrorMessage = result.ErrorMessage, data = ((List <ActivityViewModel>)result.Data).Select(aw => new[] { aw.ActivityDate, aw.Operation, aw.Text, aw.User }) }, JsonRequestBehavior.DenyGet));
         }
     }
     catch (Exception ex)
     {
         Log.Error(ex);
         throw;
     }
 }
コード例 #7
0
        public JsonResult Like(int articleId)
        {
            var result = new JsonOperationResponse();

            if (Request.IsAjaxRequest())
            {
                using (var db = new KbVaultContext())
                {
                    var article = db.Articles.FirstOrDefault(a => a.Id == articleId);
                    if (article == null)
                    {
                        result.ErrorMessage = ErrorMessages.ArticleNotFound;
                    }
                    else
                    {
                        article.Likes++;
                        db.SaveChanges();
                        result.Successful   = true;
                        result.ErrorMessage = UIResources.ArticleLikeSuccess;
                    }
                }
            }

            return(Json(result));
        }
コード例 #8
0
        public JsonResult Remove(string id)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            result.Successful = false;
            try
            {
                var parts = id.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                if (parts.Length == 2)
                {
                    var attachmentHash = parts[0];
                    var attachmentId   = parts[1];

                    Attachment at = new Attachment()
                    {
                        Id = Convert.ToInt64(attachmentId)
                    };
                    at.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                    KbVaultAttachmentHelper.RemoveAttachment(attachmentHash, KBVaultHelperFunctions.UserAsKbUser(User).Id);
                    KbVaultLuceneHelper.RemoveAttachmentFromIndex(at);
                    result.Successful = true;
                    return(Json(result));
                }
                throw new ArgumentOutOfRangeException("Invalid file hash");
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #9
0
        public JsonResult Remove(int id)
        {
            var result = new JsonOperationResponse();

            try
            {
                using (var db = new KbVaultContext())
                {
                    var currentUserId = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                    var queryParams   = new SqlParameter[] { new SqlParameter("ArticleId", id) };
                    db.Database.ExecuteSqlCommand("Delete from ArticleTag Where ArticleId = @ArticleId", queryParams);
                    var article = db.Articles.Single(a => a.Id == id);
                    if (article == null)
                    {
                        throw new Exception(ErrorMessages.ArticleNotFound);
                    }

                    while (article.Attachments.Count > 0)
                    {
                        var a = article.Attachments.First();
                        KbVaultAttachmentHelper.RemoveLocalAttachmentFile(a);
                        KbVaultLuceneHelper.RemoveAttachmentFromIndex(a);
                        article.Attachments.Remove(a);

                        /*
                         * Also remove the attachment from db.attachments collection
                         *
                         * http://stackoverflow.com/questions/17723626/entity-framework-remove-vs-deleteobject
                         *
                         * If the relationship is required (the FK doesn't allow NULL values) and the relationship is not
                         * identifying (which means that the foreign key is not part of the child's (composite) primary key)
                         * you have to either add the child to another parent or you have to explicitly delete the child
                         * (with DeleteObject then). If you don't do any of these a referential constraint is
                         * violated and EF will throw an exception when you call SaveChanges -
                         * the infamous "The relationship could not be changed because one or more of the foreign-key properties
                         * is non-nullable" exception or similar.
                         */
                        db.Attachments.Remove(a);
                    }

                    article.Author = currentUserId;
                    KbVaultLuceneHelper.RemoveArticleFromIndex(article);
                    db.Articles.Remove(article);
                    db.SaveChanges();
                    result.Data       = id;
                    result.Successful = true;
                    return(Json(result));
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #10
0
        public JsonResult Upload()
        {
            var result = new JsonOperationResponse
            {
                Successful = false
            };

            try
            {
                if (Request.Query["ArticleId"] == "")
                {
                    //result.ErrorMessage = Resources.ErrorMessages.FileUploadArticleNotFound;
                    result.ErrorMessage = "FileUploadArticleNotFound";
                }
                else if (Request.Form.Files.Count == 1)
                {
                    var articleId    = Convert.ToInt64(HttpContext.Request.Query["ArticleId"]);
                    var attachedFile = Request.Form.Files[0];
                    //var attachment = KbVaultAttachmentHelper.SaveAttachment(articleId, attachedFile, KBVaultHelperFunctions.UserAsKbUser(User).Id, _env);
                    //attachment.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;

                    var attachment = SaveAttachment(articleId, attachedFile, _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier), _env);
                    attachment.AuthorId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
                    result.Successful   = true;
                    //result.Data = new AttachmentViewModel(attachment, _actionContextAccessor);
                    result.Data = new AttachmentViewModel(attachment, _httpContextAccessor);

                    //using (var db = new KbVaultContext(_config))
                    //{
                    var sets = _context.Settings.FirstOrDefault();
                    if (sets != null)
                    {
                        var extensions = sets.IndexFileExtensions.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                        if (extensions.FirstOrDefault(a => a.ToLowerInvariant() == attachment.Extension.ToLowerInvariant()) != null)
                        {
                            //todo VRATI SE
                            _lucene.AddAttachmentToIndex(attachment);
                        }
                    }
                    //}
                }
                else
                {
                    //result.ErrorMessage = Resources.ErrorMessages.FileUploadTooManyFiles;
                    result.ErrorMessage = "FileUploadTooManyFiles";
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #11
0
        //  [Authorize(Roles = "Admin,Manager")]
        public JsonResult Remove(int id)
        {
            var result = new JsonOperationResponse();

            try
            {
                if (_categoryRepository.Get(id) != null)
                {
                    if (!_categoryRepository.HasArticleInCategory(id))
                    {
                        var cat = new Category
                        {
                            AuthorId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier),
                            Id       = id
                        };
                        if (_categoryRepository.Remove(cat))
                        {
                            result.Successful   = true;
                            result.ErrorMessage = string.Format(ErrorMessages.CategoryRemovedSuccessfully, cat.Name);
                            cat = _categoryRepository.GetFirstCategory();

                            //var url = new UrlHelper(Request.RequestContext);
                            //result.Data = cat == null
                            //    ? url.Action("Index", "Dashboard")
                            //    : url.Action("List", "Category", new { id = cat.Id, page = 1 });

                            //testirati
                            result.Data = cat == null
                               ? RedirectToAction("Index", "Dashboard")
                               : RedirectToAction("List", "Category", new { id = cat.Id, page = 1 });
                        }
                    }
                    else
                    {
                        result.Successful   = false;
                        result.ErrorMessage = ErrorMessages.CategoryIsNotEmpty;
                    }
                }
                else
                {
                    result.Successful   = false;
                    result.ErrorMessage = ErrorMessages.CategoryNotFound;
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #12
0
        public JsonResult BackupNow()
        {
            try
            {
                var foundSettings = _context.Settings.FirstOrDefault(s => true);
                var result        = new JsonOperationResponse();
                if (string.IsNullOrEmpty(foundSettings.BackupPath))
                {
                    result.Successful = false;
                    //result.ErrorMessage = Resources.ErrorMessages.BackupPathIsNotSet;
                    result.ErrorMessage = "BackupPathIsNotSet";
                }
                else
                {
                    //var connectionString = ConfigurationManager.ConnectionStrings["KbVaultContext"].ConnectionString;
                    var          connectionString = ConfigurationManager.ConnectionStrings["KnowledgeBaseContextBackup"].ConnectionString;
                    var          builder          = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);
                    IVaultBackup backup           = new VaultMsSqlBackup();
                    backup.Connect(connectionString);
                    var backupFile = string.Format("{0:yyyyMddhhmm}.bak", DateTime.Now);
                    if (!string.IsNullOrEmpty(foundSettings.BackupPath) && foundSettings.BackupPath.StartsWith("~"))
                    {
                        //backupFile = Server.MapPath(Settings.BackupPath + backupFile);
                        var contentroot = _env.ContentRootPath;
                        backupFile = System.IO.Path.Combine(contentroot, foundSettings.BackupPath + backupFile);
                    }
                    else
                    {
                        backupFile = foundSettings.BackupPath + backupFile;
                    }

                    var backupSuccessful = backup.Backup(builder.InitialCatalog, backupFile);
                    if (backupSuccessful)
                    {
                        if (!string.IsNullOrEmpty(backupFile))
                        {
                            result.Data       = backupFile;
                            result.Successful = true;
                        }
                    }
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }
コード例 #13
0
        public JsonResult Remove(int id)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            try
            {
                if (CategoryRepository.Get(id) != null)
                {
                    if (!CategoryRepository.HasArticleInCategory(id))
                    {
                        var cat = new Category()
                        {
                            Author = KBVaultHelperFunctions.UserAsKbUser(User).Id,
                            Id     = id
                        };
                        if (CategoryRepository.Remove(cat))
                        {
                            result.Successful   = true;
                            result.ErrorMessage = String.Format(ErrorMessages.CategoryRemovedSuccessfully, cat.Name);

                            UrlHelper url = new UrlHelper(Request.RequestContext);
                            cat         = CategoryRepository.GetFirstCategory();
                            result.Data = cat == null
                                ? url.Action("Index", "Dashboard")
                                : url.Action("List", "Category", new { id = cat.Id, page = 1 });
                        }
                    }
                    else
                    {
                        result.Successful   = false;
                        result.ErrorMessage = ErrorMessages.CategoryIsNotEmpty;
                    }
                }
                else
                {
                    result.Successful   = false;
                    result.ErrorMessage = ErrorMessages.CategoryNotFound;
                }


                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #14
0
        public JsonResult Restore(string file)
        {
            try
            {
                var result = new JsonOperationResponse();
                try
                {
                    var backupFile = string.Empty;
                    if (Settings.BackupPath.StartsWith("~"))
                    {
                        backupFile = Server.MapPath(Settings.BackupPath + file);
                    }
                    else
                    {
                        backupFile = Settings.BackupPath + file;
                    }

                    if (System.IO.File.Exists(backupFile))
                    {
                        var connectionString       = ConfigurationManager.ConnectionStrings["KbVaultEntities"].ConnectionString;
                        var entityConnectionString = new EntityConnectionStringBuilder(connectionString);
                        var builder = new System.Data.SqlClient.SqlConnectionStringBuilder(entityConnectionString.ProviderConnectionString);

                        IVaultBackup backup = new VaultMsSqlBackup();
                        backup.Connect(entityConnectionString.ProviderConnectionString);
                        result.Successful = backup.Restore(builder.InitialCatalog, backupFile);
                        if (result.Successful)
                        {
                            result.ErrorMessage = UIResources.BackupRestoreSuccessfull;
                        }
                    }
                    else
                    {
                        throw new FileNotFoundException(file);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    result.ErrorMessage = ex.Message;
                }

                return(Json(result, JsonRequestBehavior.DenyGet));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }
コード例 #15
0
        public JsonResult Upload()
        {
            var result = new JsonOperationResponse
            {
                Successful = false
            };

            try
            {
                if (Request.Params["ArticleId"] == null)
                {
                    result.ErrorMessage = ErrorMessages.FileUploadArticleNotFound;
                }
                else if (Request.Files.Count == 1)
                {
                    var articleId    = Convert.ToInt64(Request.Params["ArticleId"]);
                    var attachedFile = Request.Files[0];
                    var attachment   = KbVaultAttachmentHelper.SaveAttachment(articleId, attachedFile, KBVaultHelperFunctions.UserAsKbUser(User).Id);
                    attachment.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                    result.Successful = true;
                    result.Data       = new AttachmentViewModel(attachment);
                    using (var db = new KbVaultContext())
                    {
                        var sets = db.Settings.FirstOrDefault();
                        if (sets != null)
                        {
                            var extensions = sets.IndexFileExtensions.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                            if (extensions.FirstOrDefault(a => a.ToLowerInvariant() == attachment.Extension.ToLowerInvariant()) != null)
                            {
                                KbVaultLuceneHelper.AddAttachmentToIndex(attachment);
                            }
                        }
                    }
                }
                else
                {
                    result.ErrorMessage = ErrorMessages.FileUploadTooManyFiles;
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #16
0
        public JsonResult BackupNow()
        {
            try
            {
                var result = new JsonOperationResponse();
                if (string.IsNullOrEmpty(Settings.BackupPath))
                {
                    result.Successful   = false;
                    result.ErrorMessage = ErrorMessages.BackupPathIsNotSet;
                }
                else
                {
                    var          connectionString = ConfigurationManager.ConnectionStrings["KbVaultContext"].ConnectionString;
                    var          builder          = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);
                    IVaultBackup backup           = new VaultMsSqlBackup();
                    backup.Connect(connectionString);
                    var backupFile = string.Format("{0:yyyyMddhhmm}.bak", DateTime.Now);
                    if (!string.IsNullOrEmpty(Settings.BackupPath) && Settings.BackupPath.StartsWith("~"))
                    {
                        backupFile = Server.MapPath(Settings.BackupPath + backupFile);
                    }
                    else
                    {
                        backupFile = Settings.BackupPath + backupFile;
                    }

                    var backupSuccessful = backup.Backup(builder.InitialCatalog, backupFile);
                    if (backupSuccessful)
                    {
                        if (!string.IsNullOrEmpty(backupFile))
                        {
                            result.Data       = backupFile;
                            result.Successful = true;
                        }
                    }
                }

                return(Json(result, JsonRequestBehavior.DenyGet));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }
コード例 #17
0
        public JsonResult More(SearchFormViewModel model)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            try
            {
                model.CurrentPage++;
                model.Results     = KbVaultLuceneHelper.DoSearch(model.SearchKeyword, model.CurrentPage, 1);
                result.Successful = true;
                result.Data       = model;
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
            }
            return(Json(result));
        }
コード例 #18
0
        public JsonResult Suggest(string term)
        {
            var result = new JsonOperationResponse();

            try
            {
                var suggestions = _context.Tags.Where(t => t.Name.Contains(term)).Select(t => t.Name).Take(20).ToList <string>();
                result.Successful = true;
                result.Data       = suggestions.ToArray();
                return(Json(result));
            }
            catch (Exception ex)
            {
                log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #19
0
        public JsonResult Ajax(string id)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            try
            {
                if (Request.IsAjaxRequest())
                {
                    List <KbSearchResultItemViewModel> items = KbVaultLuceneHelper.DoSearch(id, 1, 10); //Request.Form["txtSearch"]);
                    result.Data       = items;
                    result.Successful = true;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
            }
            return(Json(result));
        }
コード例 #20
0
        public JsonResult Ajax(string id)
        {
            var result = new JsonOperationResponse();

            try
            {
                if (Request.IsAjaxRequest())
                {
                    var items = KbVaultLuceneHelper.DoSearch(id, 1, 10);
                    result.Data       = items;
                    result.Successful = true;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
            }

            return(Json(result));
        }
コード例 #21
0
        public JsonResult Remove(string id)
        {
            var result = new JsonOperationResponse
            {
                Successful = false
            };

            try
            {
                var parts = id.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                if (parts.Length == 2)
                {
                    var attachmentHash = parts[0];
                    var attachmentId   = parts[1];

                    var at = new Attachment
                    {
                        Id = Convert.ToInt64(attachmentId),
                        //AuthorId = KBVaultHelperFunctions.UserAsKbUser(User).Id
                        AuthorId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier)
                    };

                    RemoveAttachment(attachmentHash, _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier), _env);

                    _lucene.RemoveAttachmentFromIndex(at);
                    result.Successful = true;
                    return(Json(result));
                }

                throw new ArgumentOutOfRangeException("Invalid file hash");
            }
            catch (Exception ex)
            {
                log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
コード例 #22
0
        [AjaxOnly] //vrati se
        public JsonResult Ajax(string id)
        {
            var result = new JsonOperationResponse();

            try
            {
                //bool IsAjax = _actionContextAccessor.ActionContext.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest";
                //bool IsAjax = _httpContextAccessor.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest";
                //if (IsAjax == true)
                //{
                var items = _lucene.DoSearch(id, 1, 10);
                result.Data       = items;
                result.Successful = true;
                //}
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
            }

            return(Json(result));
        }
コード例 #23
0
        public JsonResult Restore(string file)
        {
            try
            {
                var foundSettings = _context.Settings.FirstOrDefault(s => true);
                var result        = new JsonOperationResponse();
                try
                {
                    var backupFile = string.Empty;
                    if (foundSettings.BackupPath.StartsWith("~"))
                    {
                        var webroot = _env.WebRootPath;
                        backupFile = System.IO.Path.Combine(webroot, foundSettings.BackupPath + file);
                        //backupFile = Server.MapPath(Settings.BackupPath + file);
                    }
                    else
                    {
                        backupFile = foundSettings.BackupPath + file;
                    }

                    if (System.IO.File.Exists(backupFile))
                    {
                        var connectionString = ConfigurationManager.ConnectionStrings["KnowledgeBaseContextBackup"].ConnectionString;
                        //https://docs.microsoft.com/en-us/dotnet/api/system.data.entity.core.entityclient?view=entity-framework-6.2.0
                        var entityConnectionString = ConfigurationManager.ConnectionStrings["KnowledgeBaseContextBackup"].ConnectionString;
                        var builder = new System.Data.SqlClient.SqlConnectionStringBuilder(entityConnectionString);

                        //var entityConnectionString = new EntityConnectionStringBuilder(connectionString);
                        //var entityConnectionString = new System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder(connectionString);
                        //var builder = new System.Data.SqlClient.SqlConnectionStringBuilder(entityConnectionString.ProviderConnectionString);


                        //var builder = new System.Data.Common.DbConnectionStringBuilder.SqlConnectionStringBuilder(entityConnectionString.ProviderConnectionString);
                        //System.Data.Entity.Core.EntityClient.
                        //System.Data.Common.DbConnectionStringBuilder.

                        IVaultBackup backup = new VaultMsSqlBackup();
                        //backup.Connect(entityConnectionString.ProviderConnectionString);
                        backup.Connect(entityConnectionString);

                        result.Successful = backup.Restore(builder.InitialCatalog, backupFile);
                        if (result.Successful)
                        {
                            result.ErrorMessage = "BackupRestoreSuccessfull"; // Resources.UIResources.BackupRestoreSuccessfull;
                        }
                    }
                    else
                    {
                        throw new FileNotFoundException(file);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    result.ErrorMessage = ex.Message;
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }