/// <summary>
        /// Saves site item.
        /// </summary>
        /// <instructions>
        /// Set inputItem.Id to null when creating a new object.
        /// </instructions>
        /// <param name="item">Site object</param>
        /// <returns>Result with save status and messages if error occurs. Does not return an identifier.</returns>
        public static async Task <Result> Save(models.Site item)
        {
            var messages = new List <string>();

            if (item == null)
            {
                return(new Result(ResultStatus.Failed, "Site cannot be null."));
            }

            Rules.StringRequiredMaxLength(item.Name, "Name", 25, ref messages);

            if (messages.Any())
            {
                return(new Result(ResultStatus.Failed, messages));
            }

            Tables.dbo.Site convertedSite = Convert(item);
            if (convertedSite == null)
            {
                return(new Result(ResultStatus.Failed, "Could not convert Site model to table."));
            }

            Result saveResult = await dbWrite.Item(convertedSite);

            return(saveResult);
        }
        internal static Tables.dbo.Site Convert(models.Site inputItem)
        {
            if (inputItem == null)
            {
                return(null);
            }
            var output = new Tables.dbo.Site
            {
                Id   = inputItem.Id,
                Name = inputItem.Name
            };

            return(output);
        }
        public static async Task <models.Site> Item(string enumerator)
        {
            Tables.dbo.Site item = await dbRead.Item(enumerator);

            if (item == null)
            {
                return(null);
            }
            var output = new models.Site
            {
                Id   = item.Id,
                Name = item.Name
            };

            return(output);
        }
        public static async Task <models.Testimonial> Item(string site, Guid?workId)
        {
            if (!workId.HasValue)
            {
                return(null);
            }
            models.Site siteItem = await Site.Item(site);

            if (siteItem?.Id == null)
            {
                return(null);
            }
            Tables.dbo.Testimonial testimonial = await dbRead.Testimonial.Item(siteItem.Id, workId.Value);

            if (testimonial == null)
            {
                return(null);
            }
            return(await Item(testimonial));
        }