public WebsiteMirror PostSaveMirror(WebsiteMirror website)
 {
     website.Config = JsonConvert.SerializeObject(new WebsiteModel(website.Name));
     
     DatabaseContext.Database.Save(website);            
     return website;
 }
        /// <summary>
        /// Updates website's config if needed and maps it to database mirror
        /// </summary>
        /// <param name="website">Website's mirror for XML comparsion</param>
        /// <param name="config">Website's config</param>
        /// <returns>
        /// Database mirror
        /// </returns>
        public WebsiteMirror MapModelToMirror(WebsiteMirror website, WebsiteModel config)
        {
            OrganizerHelper orgHelper = new OrganizerHelper();

            website.Name = config.Name;

            website.Xml = config.ExportConfig.Xml;
            website.Xsl = config.ExportConfig.Xsl;

            config.ExportConfig.Xml = string.Empty;
            config.ExportConfig.Xsl = string.Empty;

            // If XML is downloaded, retrieve it from the database, and deserialize and update each page of config.OrganizerModel
            if (website.Xml != string.Empty && website.Xml != null)
            {
                Site site;

                // Deserialize XML
                using (var sw = new StringReader(website.Xml))
                {
                    var serializer = new XmlSerializer(typeof(Site));
                    site = (Site)serializer.Deserialize(sw);
                }

                // Find changes in pages and properties (names, properties) and handle them
                orgHelper.UpdateChildren(site.Root, site, config);                

                // Turn the object into XML
                using (var sw = new StringWriter())
                {
                    var serializer = new XmlSerializer(typeof(Site));
                    serializer.Serialize(sw, site);

                    website.Xml = sw.ToString();
                }

                // Update each page of config.OrganizerModel
                config.OrganizerConfig.Pages = orgHelper.AddChildren(site.Root, site);
            }

            // Finally, update website's config
            website.Config = JsonConvert.SerializeObject(config);

            return website;
        }
        /// <summary>
        /// Saves website to database
        /// </summary>
        /// <param name="website">Website's mirror</param>
        /// <returns>
        /// Website's mirror
        /// </returns>
        public WebsiteMirror Save(WebsiteMirror website)
        {
            if (website.Config == "" || website.Config == "null")
            {
                website.Config = JsonConvert.SerializeObject(new WebsiteModel(website.Name));
            }

            if (website.Id > 0)
            {
                DatabaseContext.Database.Update(website);
            }
            else
            {
                DatabaseContext.Database.Save(website);
            }

            return website;
        }