public static ViewModels.Archive ToViewModel(this Models.Archive model)
        {
            ViewModels.Archive result = null;

            if (model != null)
            {
                result = new ViewModels.Archive();
                if (model.Collection != null)
                {
                    result.Collection = model.Collection.ToViewModel();
                }
                if (model.DateReleased != null)
                {
                    result.DateReleased = (DateTime)model.DateReleased;
                }
                result.HtmlContent = model.HtmlContent;
                if (model.Id != null)
                {
                    result.Id = model.Id.ToString();
                }
                result.TextContent  = model.TextContent;
                result.MinistryText = model.MinistryText;
                result.Title        = model.Title;
                result.Preview      = model.Preview;
                result.Body         = model.Body;
            }
            return(result);
        }
        public static Models.Archive FromViewModel(this ViewModels.Archive viewModel)
        {
            Models.Archive result = null;

            if (viewModel != null)
            {
                result = new Models.Archive();
                if (viewModel.Collection != null)
                {
                    result.Collection = viewModel.Collection.FromViewModel();
                }
                if (viewModel.DateReleased != null)
                {
                    result.DateReleased = (DateTime)viewModel.DateReleased;
                }
                result.HtmlContent = viewModel.HtmlContent;
                if (viewModel.Id != null)
                {
                    result.Id = new ObjectId(viewModel.Id);
                }
                result.TextContent  = viewModel.TextContent;
                result.MinistryText = viewModel.MinistryText;
                result.Title        = viewModel.Title;
                result.Preview      = viewModel.Preview;
                result.Body         = viewModel.Body;
            }
            return(result);
        }
        public IActionResult AddArchive([FromBody] ViewModels.Archive data)
        {
            Models.Archive newArchive = data.FromViewModel();

            // first add the collection.
            ViewModels.Collection c = data.Collection;

            Models.Collection dbCollection = null;

            if (!string.IsNullOrEmpty(c.Id))
            {
                dbCollection = db.GetCollection(new ObjectId(c.Id));
            }
            else
            {
                // try to find it by searching other fields.
                dbCollection = db.GetCollection(c.StartDate, c.EndDate, c.Name);
            }
            if (dbCollection == null)
            {
                Models.Collection newCollection = c.FromViewModel();

                dbCollection = db.CreateCollection(newCollection);
            }

            if (dbCollection != null)
            {
                newArchive.Collection = dbCollection;
            }

            db.CreateArchive(newArchive);

            return(new ObjectResult(newArchive.ToViewModel()));
        }