public static bool CheckConfigurationCount(Core.DomainModel.Business business) { if ((business != null) && (business.Configurations != null)) { if (business.Configurations.Length > 3) { return(false); } } return(true); }
Core.DomainModel.Business[] IBusinessManager.ListBusiness(bool IsIncludingConfigurations) { List <Core.DomainModel.Business> businesses = new List <Core.DomainModel.Business>(); List <Core.DomainModel.Configuration> configurations = null; using (DataModelContainer container = new DataModelContainer()) { Core.DomainModel.Business business = null; foreach (var biz in container.Businesses) { business = new Core.DomainModel.Business() { ID = biz.Id, Name = biz.Name, //ReferenceID = cust.ReferenceId }; if (!String.IsNullOrEmpty(biz.ReferenceId)) { business.ReferenceID = biz.ReferenceId.Split(new string[] { "," }, StringSplitOptions.None); } if (IsIncludingConfigurations) { var confs = container.Configurations.Where((o) => (o.BusinessId.ToLower() == biz.Id.ToLower())).ToArray(); if ((confs != null) && (confs.Length > 0)) { configurations = new List <Core.DomainModel.Configuration>(); foreach (var conf in confs) { configurations.Add(new Core.DomainModel.Configuration() { ID = conf.Id, ConfigurationType = ((ConfigurationType)(conf.TypeId)), DbConnectionString = conf.DbConnectionString }); } business.Configurations = configurations.ToArray(); } } businesses.Add(business); } } return(businesses.ToArray()); }
public static bool ValidateConfigurationDBConnectionString(Core.DomainModel.Business business) { if ((business != null) && (business.Configurations != null)) { List <Core.DomainModel.Configuration> configurations = new List <Core.DomainModel.Configuration>(business.Configurations); string dbConnectionString = ""; string[] fields = null; string[] subFields = null; string[] separator = new string[] { ";" }; string[] subSeparator = new string[] { "=" }; for (int i = 0; i < configurations.Count; i++) { dbConnectionString = configurations[i].DbConnectionString.ToLower(); fields = dbConnectionString.Split(separator, StringSplitOptions.None); if ((fields == null) || (fields.Length < 4)) { return(false); } subFields = fields[0].Split(subSeparator, StringSplitOptions.None); if ((subFields == null) || (subFields.Length < 2)) { return(false); } if (subFields[1].StartsWith(".") || subFields[1].StartsWith("localhost") || subFields[1].StartsWith("(local)") || (subFields[1].StartsWith("127.")) || (subFields[1].StartsWith("(.)"))) { return(false); } } } return(true); }
public static bool CheckConfigurationType(Core.DomainModel.Business business) { if ((business != null) && (business.Configurations != null)) { List <Core.DomainModel.Configuration> configurations = new List <Core.DomainModel.Configuration>(business.Configurations); configurations.Sort(new ConfigurationTypeComparer()); for (int i = 0; i < configurations.Count; i++) { if (i != (configurations.Count - 1)) { if (configurations[i].ConfigurationType == configurations[i + 1].ConfigurationType) { return(false); } } } } return(true); }
Core.DomainModel.Business IBusinessManager.GetBusiness(string BusinessID) { Core.DomainModel.Business business = new Core.DomainModel.Business(); using (DataModelContainer container = new DataModelContainer()) { var biz = container.Businesses.First((o) => (o.Id.ToLower() == BusinessID.ToLower())); business.ID = biz.Id; business.Name = biz.Name; //customer.ReferenceID = cust.ReferenceId; if (!String.IsNullOrEmpty(biz.ReferenceId)) { business.ReferenceID = biz.ReferenceId.Split(new string[] { "," }, StringSplitOptions.None); } var confs = container.Configurations.Where((o) => (o.BusinessId.ToLower() == BusinessID.ToLower())); List <Core.DomainModel.Configuration> configurations = new List <Core.DomainModel.Configuration>(); foreach (var conf in confs) { configurations.Add(new Core.DomainModel.Configuration() { ID = conf.Id, ConfigurationType = (ConfigurationType)(conf.TypeId), DbConnectionString = conf.DbConnectionString }); } business.Configurations = configurations.ToArray(); } return(business); }
public static bool CheckConfigurationDBConnectionString(Core.DomainModel.Business business, out Dictionary <string, string> suspectConfigurations) { suspectConfigurations = null; if ((business != null) && (business.Configurations != null)) { List <Core.DomainModel.Configuration> configurations = new List <Core.DomainModel.Configuration>(business.Configurations); configurations.Sort(new ConfigurationDBConnectionStringComparer()); string databaseName = "", serverName = "", userName = "", password = "", existingDBName = "", existingServerName = ""; for (int i = 0; i < configurations.Count; i++) { if (i != (configurations.Count - 1)) { if (configurations[i].DbConnectionString.ToLower() == configurations[i + 1].DbConnectionString.ToLower()) { ParseConnectionString(configurations[i].DbConnectionString.ToLower(), out serverName, out databaseName, out userName, out password); if (suspectConfigurations == null) { suspectConfigurations = new Dictionary <string, string>(); } if (!suspectConfigurations.ContainsKey(business.Name)) { suspectConfigurations.Add(business.Name, serverName); } return(false); } else { ParseConnectionString(configurations[i].DbConnectionString.ToLower(), out serverName, out databaseName, out userName, out password); ParseConnectionString(configurations[i + 1].DbConnectionString.ToLower(), out existingServerName, out existingDBName, out userName, out password); if (suspectConfigurations == null) { suspectConfigurations = new Dictionary <string, string>(); } if ((serverName == existingServerName) && (databaseName == existingDBName)) { if (!suspectConfigurations.ContainsKey(business.Name)) { suspectConfigurations.Add(business.Name, serverName); } return(false); } else if (databaseName == existingDBName) { if (!suspectConfigurations.ContainsKey(business.Name)) { suspectConfigurations.Add(business.Name, existingServerName); } } } } } } return(true); }
public Core.DomainModel.Business[] SearchBusiness(Func <IList <SearchingArgument>, object> QueryExpressionFunction, IList <SearchingArgument> SearchingArguments, PagingArgument PagingArgument, bool IsIncludingConfigurations) { List <Core.DomainModel.Business> businesses = new List <Core.DomainModel.Business>(); List <Core.DomainModel.Configuration> configurations = null; using (DataModelContainer container = new DataModelContainer()) { Core.DomainModel.Business business = null; //var bizArray = new Business[] { };//container.Businesses.ToArray(); //if (PagingArgument != null) //{ // PagingArgument.Reset(bizArray.Length); // var bizQueryResult = container.Businesses.OrderByDescending(b => b.CreationTime).Skip(PagingArgument.CurrentPageIndex * PagingArgument.EachPageSize).Take(PagingArgument.EachPageSize); // if (QueryExpressionFunction != null && SearchingArguments != null) // { // var filterExpression = QueryExpressionFunction(SearchingArguments); // if (filterExpression != null && filterExpression is Expression<Func<Business, bool>>) // { // bizQueryResult = bizQueryResult.Where((filterExpression as Expression<Func<Business, bool>>)); // } // } // bizArray = bizQueryResult.ToArray(); //} var bizQueryResult = container.Businesses.OrderByDescending(b => b.CreationTime).AsQueryable(); if (QueryExpressionFunction != null && SearchingArguments != null) { var filterExpression = QueryExpressionFunction(SearchingArguments); if (filterExpression != null && filterExpression is Expression <Func <Business, bool> > ) { bizQueryResult = bizQueryResult.Where((filterExpression as Expression <Func <Business, bool> >)); } } if (PagingArgument != null) { //PagingArgument.Reset(bizQueryResult.Count(b => true)); //bizQueryResult = bizQueryResult.Skip(PagingArgument.CurrentPageIndex * PagingArgument.EachPageSize).Take(PagingArgument.EachPageSize); var futureCount = bizQueryResult.FutureCount(); var futureResult = bizQueryResult.Skip(PagingArgument.CurrentPageIndex * PagingArgument.EachPageSize).Take(PagingArgument.EachPageSize).Future(); PagingArgument.Reset(futureCount.Value); bizQueryResult = futureResult.AsQueryable(); } var bizArray = bizQueryResult.ToArray(); foreach (var biz in bizArray)//foreach (var biz in container.Businesses) { business = new Core.DomainModel.Business() { ID = biz.Id, Name = biz.Name, //ReferenceID = cust.ReferenceId }; if (!String.IsNullOrEmpty(biz.ReferenceId)) { business.ReferenceID = biz.ReferenceId.Split(new string[] { "," }, StringSplitOptions.None); } if (IsIncludingConfigurations) { var confs = container.Configurations.Where((o) => (o.BusinessId.ToLower() == biz.Id.ToLower())).ToArray(); if ((confs != null) && (confs.Length > 0)) { configurations = new List <Core.DomainModel.Configuration>(); foreach (var conf in confs) { configurations.Add(new Core.DomainModel.Configuration() { ID = conf.Id, ConfigurationType = ((ConfigurationType)(conf.TypeId)), DbConnectionString = conf.DbConnectionString }); } business.Configurations = configurations.ToArray(); } } businesses.Add(business); } } return(businesses.ToArray()); }
public string AddBusinessConfiguration(Core.DomainModel.Business Business) { if (!BusinessRule.CheckConfigurationCount(Business)) { throw new ConfigurationCountLimitExceededException("1 configuration set should not have more than 3 configurations!"); } if (!BusinessRule.CheckConfigurationType(Business)) { throw new DuplicatedConfigurationTypeException("1 configuration set should not have 2 or more configurations that are of the same type!"); } Dictionary <string, string> suspectConfs = null; if (!BusinessRule.CheckConfigurationDBConnectionString(Business, out suspectConfs)) { throw new DuplicatedDatabaseException("1 configuration set should not have 2 or more configurations that are using the same database!"); } else if ((suspectConfs != null) && (suspectConfs.Count > 0)) { string message = "Suspect databases found in the bindings of the following configurations, please double check to make sure that they are not the same database:"; string suspectConfListTemplate = "Business Name: \"{0}\", Server Name: \"{1}\"; "; message += System.Environment.NewLine; foreach (string bizName in suspectConfs.Keys) { message += string.Format(suspectConfListTemplate, bizName, suspectConfs[bizName]); message += System.Environment.NewLine; } throw new DuplicatedDatabaseException(message); } if (!BusinessRule.ValidateConfigurationDBConnectionString(Business)) { throw new InvalidConnectionStringException("Connection string is invalid! Make sure each field of the connection string has its value assigned, and also make sure loopback address is not used."); } DateTime creationTime = DateTime.Now; using (DataModelContainer container = new DataModelContainer()) { Business biz = new Business() { Id = Business.ID, Name = Business.Name, CreationTime = creationTime, ModificationTime = creationTime }; //if (String.IsNullOrEmpty(Customer.ReferenceID)) //{ // cust.ReferenceId = Customer.ReferenceID; //} if (Business.ReferenceID != null) { biz.ReferenceId = ""; for (int i = 0; i < Business.ReferenceID.Length; i++) { biz.ReferenceId += Business.ReferenceID[i]; if (i != (Business.ReferenceID.Length - 1)) { biz.ReferenceId += ","; } } } container.Businesses.Add(biz); foreach (var conf in Business.Configurations) { if (conf != null) { Configuration configuration = new Configuration() { Business = biz, Id = conf.ID, BusinessId = biz.Id, DbConnectionString = conf.DbConnectionString, TypeId = (int)(conf.ConfigurationType), CreationTime = creationTime, ModificationTime = creationTime }; container.Configurations.Add(configuration); } } container.SaveChanges(); } return(Business.ID); }
public int UpdateBusinessConfiguration(Core.DomainModel.Business Business) { if (!BusinessRule.CheckConfigurationCount(Business)) { throw new ConfigurationCountLimitExceededException("1 configuration set should not have more than 3 configurations!"); } if (!BusinessRule.CheckConfigurationType(Business)) { throw new DuplicatedConfigurationTypeException("1 configuration set should not have 2 or more configurations that are of the same type!"); } Dictionary <string, string> suspectConfs = null; if (!BusinessRule.CheckConfigurationDBConnectionString(Business, out suspectConfs)) { throw new DuplicatedDatabaseException("1 configuration set should not have 2 or more configurations that are using the same database!"); } else if ((suspectConfs != null) && (suspectConfs.Count > 0)) { string message = "Suspect databases found in the bindings of the following configurations, please double check to make sure that they are not the same database:"; string suspectConfListTemplate = "Business Name: \"{0}\", Server Name: \"{1}\"; "; message += System.Environment.NewLine; foreach (string bizName in suspectConfs.Keys) { message += string.Format(suspectConfListTemplate, bizName, suspectConfs[bizName]); message += System.Environment.NewLine; } throw new DuplicatedDatabaseException(message); } if (!BusinessRule.ValidateConfigurationDBConnectionString(Business)) { throw new InvalidConnectionStringException("Connection string is invalid! Make sure each field of the connection string has its value assigned, and also make sure loopback address is not used."); } int returnValue = -9; DateTime modificationTime = DateTime.Now; using (DataModelContainer container = new DataModelContainer()) { Business biz = container.Businesses.First((o) => (o.Id.ToLower() == Business.ID.ToLower())); biz.Name = Business.Name; biz.ModificationTime = modificationTime; //cust.ReferenceId = Customer.ReferenceID; if (Business.ReferenceID != null) { biz.ReferenceId = ""; for (int i = 0; i < Business.ReferenceID.Length; i++) { biz.ReferenceId += Business.ReferenceID[i]; if (i != (Business.ReferenceID.Length - 1)) { biz.ReferenceId += ","; } } } var confs = container.Configurations.Where((o) => (o.BusinessId == Business.ID)).ToArray(); List <Core.DomainModel.Configuration> bizConfList = new List <Core.DomainModel.Configuration>(Business.Configurations); for (int i = 0; i < confs.Length; i++) { for (int j = 0; j < bizConfList.Count; j++) { if ((confs[i] != null) && (bizConfList[j] != null)) { if (confs[i].Id.ToLower() == bizConfList[j].ID.ToLower()) { confs[i].DbConnectionString = bizConfList[j].DbConnectionString; confs[i].TypeId = ((int)(bizConfList[j].ConfigurationType)); confs[i].ModificationTime = modificationTime; bizConfList.RemoveAt(j); j--; } } } } if (bizConfList.Count > 0) { foreach (var conf in bizConfList) { if (conf != null) { Configuration configuration = new Configuration() { Business = biz, Id = conf.ID, BusinessId = biz.Id, DbConnectionString = conf.DbConnectionString, TypeId = (int)(conf.ConfigurationType), CreationTime = modificationTime, ModificationTime = modificationTime }; container.Configurations.Add(configuration); } } } returnValue = container.SaveChanges(); } return(returnValue); }