public ViewModels.Site Save(ViewModels.RegisterSite site)
        {
            try
            {
                if (!ValidateSite(site))
                {
                    base.ValidationFailed();
                    return(null);
                }

                base.ValidationPassed();

                DataModels.Site dbSite = new DataModels.Site();
                dbSite.HoursPerDay      = site.HoursPerDay;
                dbSite.IncludeWeekends  = site.IncludeWeekends;
                dbSite.Name             = site.Name;
                dbSite.UniqueSiteId     = site.UniqueSiteId;
                dbSite.PublicIdentifier = Guid.NewGuid();
                this.context.Site.Add(dbSite);
                this.context.SaveChanges();
                ViewModels.Site viewSite = new ViewModels.Site();
                viewSite.UniqueSiteId    = dbSite.UniqueSiteId;
                viewSite.HoursPerDay     = dbSite.HoursPerDay;
                viewSite.ID              = dbSite.PublicIdentifier;
                viewSite.IncludeWeekends = dbSite.IncludeWeekends;
                viewSite.Name            = dbSite.Name;
                return(viewSite);
            }
            catch (Exception e)
            {
                base.SetError(e.Message);
                return(null);
            }
        }
        private bool ValidateSite(ViewModels.RegisterSite site)
        {
            //Can't save more than one site in single site mode
            if (this.configuration["SingleSiteMode"].ToLower() == "true")
            {
                if (this.context.Site.Count() > 0)
                {
                    return(false);
                }
            }

            if (String.IsNullOrEmpty(site.Name) || site.Name.Length > 50)
            {
                return(false);
            }

            if (site.HoursPerDay <= 0)
            {
                return(false);
            }

            if (String.IsNullOrEmpty(site.UniqueSiteId) || site.UniqueSiteId.Length > 100)
            {
                return(false);
            }

            return(true);
        }
        public IActionResult Post([FromBody] ViewModels.RegisterSite site)
        {
            ViewModels.Site returnSite = this.siteRepository.Save(site);

            if (!siteRepository.ValidSubmission)
            {
                return(BadRequest(site));
            }

            if (siteRepository.ErrorDetected)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }

            return(new ObjectResult(returnSite));
        }