public IEnumerable<string> ValidateSiteCloseRequest(CreateUpdateSiteRequest request) { var validationMessages = new List<string>(); var site = _siteRepository.GetById(request.Id); bool isSiteClosed = site.SiteClosedDate != null; //do the validation if siteClosed status is being changed from the current database status and //site is being closed if (isSiteClosed != request.SiteClosed && request.SiteClosed) { var children = site.Children.Where(x => x.SiteClosedDate == null); if (children.Any()) { validationMessages.Add("Please remove all linked sites."); } var employees = _employeeRepository.GetBySite(site.Id); if (employees.Any()) { validationMessages.Add("Please remove all attached employees."); } } return validationMessages; }
public long CreateUpdate(CreateUpdateSiteRequest request) { var parent = request.ParentId != null ? _siteStructureElementRepository.GetById(request.ParentId.Value) : null; var site = _siteRepository.GetById(request.Id); var currentUser = _userForAuditingRepository.GetByIdAndCompanyId(request.CurrentUserId, request.ClientId); if (request.Id == default(long)) { site = Site.Create( request.SiteId, parent, request.ClientId, request.Name, request.Reference, request.SiteContact, currentUser); } else { site.Update( parent, request.Name, request.Reference, request.ClientId, request.SiteContact, currentUser, request.IsSiteOpenRequest, request.IsSiteClosedRequest); } var sitesWithSameName = _siteStructureElementRepository.GetByName(request.ClientId, site.Name).Where(sg => sg.Id != request.Id); site.Validate(sitesWithSameName); _siteRepository.SaveOrUpdate(site); return site.Id; }
public void GetSiteOpenClosedRequest(CreateUpdateSiteRequest request, out bool isSiteOpenRequest, out bool isSiteClosedRequest) { var site = _siteRepository.GetById(request.Id); isSiteOpenRequest = site.SiteClosedDate != null && !request.SiteClosed; isSiteClosedRequest = site.SiteClosedDate == null && request.SiteClosed; }