public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { var validationResults = new List <ValidationResult>(); if (LogoFileResourceData != null && LogoFileResourceData.ContentLength > MaxLogoSizeInBytes) { var errorMessage = $"Logo is too large - must be less than {FileUtility.FormatBytes(MaxLogoSizeInBytes)}. Your logo was {FileUtility.FormatBytes(LogoFileResourceData.ContentLength)}."; validationResults.Add(new SitkaValidationResult <EditViewModel, HttpPostedFileBase>(errorMessage, x => x.LogoFileResourceData)); } var isSitkaAdmin = new SitkaAdminFeature().HasPermissionByPerson(HttpRequestStorage.Person); if (OrganizationGuid.HasValue && isSitkaAdmin) { var organization = HttpRequestStorage.DatabaseEntities.Organizations.SingleOrDefault(x => x.OrganizationGuid == OrganizationGuid); if (organization != null && organization.OrganizationID != OrganizationID) { validationResults.Add(new SitkaValidationResult <EditViewModel, Guid?>("This Guid is already associated with an Organization", x => x.OrganizationGuid)); } else { try { var keystoneClient = new KeystoneDataClient(); var keystoneOrganization = keystoneClient.GetOrganization(OrganizationGuid.Value); } catch (Exception) { validationResults.Add(new SitkaValidationResult <EditViewModel, Guid?>("Organization Guid not found in Keystone", x => x.OrganizationGuid)); } } } return(validationResults); }
private static Person CreateNewFirmaPerson(KeystoneService.KeystoneUserClaims keystoneUser, Guid?organizationGuid) { Organization organization; if (organizationGuid.HasValue) { organization = HttpRequestStorage.DatabaseEntities.Organizations.GetOrganizationByOrganizationGuid(organizationGuid .Value); if (organization == null) { var keystoneClient = new KeystoneDataClient(); var keystoneOrganization = keystoneClient.GetOrganization(organizationGuid.Value); var defaultOrganizationType = HttpRequestStorage.DatabaseEntities.OrganizationTypes.GetDefaultOrganizationType(); var neptuneOrganization = new Organization(keystoneOrganization.FullName, true, defaultOrganizationType) { OrganizationGuid = keystoneOrganization.OrganizationGuid, OrganizationShortName = keystoneOrganization.ShortName, OrganizationUrl = keystoneOrganization.URL }; HttpRequestStorage.DatabaseEntities.Organizations.Add(neptuneOrganization); HttpRequestStorage.DatabaseEntities.SaveChanges(); organization = neptuneOrganization; } } else { organization = HttpRequestStorage.DatabaseEntities.Organizations.GetUnknownOrganization(); } var firmaPerson = new Person(keystoneUser.UserGuid, keystoneUser.FirstName, keystoneUser.LastName, keystoneUser.Email, Role.Unassigned, DateTime.Now, true, organization, false, keystoneUser.LoginName, false, Guid.NewGuid()); HttpRequestStorage.DatabaseEntities.People.Add(firmaPerson); return(firmaPerson); }
public ActionResult PullOrganizationFromKeystone(PullOrganizationFromKeystoneViewModel viewModel) { if (!ModelState.IsValid) { return(ViewPullOrganizationFromKeystone(viewModel)); } var keystoneClient = new KeystoneDataClient(); var organizationGuid = viewModel.OrganizationGuid.GetValueOrDefault(); // never null due to RequiredAttribute KeystoneDataService.Organization keystoneOrganization; try { keystoneOrganization = keystoneClient.GetOrganization(organizationGuid); } catch (Exception) { SetErrorForDisplay("Organization not added. Guid not found in Keystone or unable to connect to Keystone"); return(new ModalDialogFormJsonResult()); } var neptuneOrganization = HttpRequestStorage.DatabaseEntities.Organizations.SingleOrDefault(x => x.OrganizationGuid == organizationGuid); if (neptuneOrganization != null) { SetErrorForDisplay("Organization not added - it already exists in Neptune"); return(new ModalDialogFormJsonResult()); } var defaultOrganizationType = HttpRequestStorage.DatabaseEntities.OrganizationTypes.GetDefaultOrganizationType(); neptuneOrganization = new Organization(keystoneOrganization.FullName, true, defaultOrganizationType) { OrganizationGuid = keystoneOrganization.OrganizationGuid, OrganizationShortName = keystoneOrganization.ShortName, OrganizationUrl = keystoneOrganization.URL }; HttpRequestStorage.DatabaseEntities.Organizations.Add(neptuneOrganization); HttpRequestStorage.DatabaseEntities.SaveChanges(); SetMessageForDisplay($"Organization {neptuneOrganization.GetDisplayNameAsUrl()} successfully added."); return(new ModalDialogFormJsonResult()); }
public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { var validationResults = new List <ValidationResult>(); bool isNewOrganization = this.OrganizationID <= 0; // If New organization, make sure Org name not already taken by existing Org if (isNewOrganization) { var existingOrg = HttpRequestStorage.DatabaseEntities.Organizations.SingleOrDefault(o => o.OrganizationName.ToLower() == this.OrganizationName.ToLower()); if (existingOrg != null) { validationResults.Add(new SitkaValidationResult <EditViewModel, string>($"There is already an Organization named {this.OrganizationName}.", x => x.OrganizationName)); } } else // If Existing Organization being edited, and name is being changed, make sure Org name not already taken by other Org { var existingOrgWithCurrentID = HttpRequestStorage.DatabaseEntities.Organizations.SingleOrDefault(o => o.OrganizationID == this.OrganizationID); Check.EnsureNotNull(existingOrgWithCurrentID, $"Was expecting to find existing record for Organization with OrganizationID {this.OrganizationID}; please contact Sitka support"); bool organizationNameIsBeingChanged = existingOrgWithCurrentID.OrganizationName.ToLower() != this.OrganizationName.ToLower(); if (organizationNameIsBeingChanged) { var existingOrgWithNewName = HttpRequestStorage.DatabaseEntities.Organizations.SingleOrDefault(o => o.OrganizationName.ToLower() == this.OrganizationName.ToLower()); if (existingOrgWithNewName != null) { validationResults.Add(new SitkaValidationResult <EditViewModel, string>($"There is already another Organization named {this.OrganizationName}.", x => x.OrganizationName)); } } } if (string.IsNullOrEmpty(OrganizationShortName)) { validationResults.Add(new SitkaValidationResult <EditViewModel, string>("The Short Name field is required.", x => x.OrganizationShortName)); } if (LogoFileResourceData != null && LogoFileResourceData.ContentLength > MaxLogoSizeInBytes) { var errorMessage = $"Logo is too large - must be less than {FileUtility.FormatBytes(MaxLogoSizeInBytes)}. Your logo was {FileUtility.FormatBytes(LogoFileResourceData.ContentLength)}."; validationResults.Add(new SitkaValidationResult <EditViewModel, HttpPostedFileBase>(errorMessage, x => x.LogoFileResourceData)); } var isSitkaAdmin = new SitkaAdminFeature().HasPermissionByFirmaSession(HttpRequestStorage.FirmaSession); if (KeystoneOrganizationGuid.HasValue && isSitkaAdmin) { var organization = HttpRequestStorage.DatabaseEntities.Organizations.SingleOrDefault(x => x.KeystoneOrganizationGuid == KeystoneOrganizationGuid); if (organization != null && organization.OrganizationID != OrganizationID) { validationResults.Add(new SitkaValidationResult <EditViewModel, Guid?>("This Guid is already associated with an Organization", x => x.KeystoneOrganizationGuid)); } else { try { var keystoneClient = new KeystoneDataClient(); var keystoneOrganization = keystoneClient.GetOrganization(KeystoneOrganizationGuid.Value); } catch (Exception) { validationResults.Add(new SitkaValidationResult <EditViewModel, Guid?>("Organization Guid not found in Keystone", x => x.KeystoneOrganizationGuid)); } } } return(validationResults); }