Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }
Пример #4
0
        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);
        }