public PurchaseLimitationGroup QueryPurchaseRestrictionSettingList(Guid superId, Guid purchseId) { PurchaseLimitationGroup view = null; string sql = @"DECLARE @IsGlobalPurchase int; SELECT @IsGlobalPurchase = PurchaseLimitationType FROM dbo.T_Company WHERE Id=@CompanyId; IF @IsGlobalPurchase = 2 BEGIN SELECT LimitationGroup.Id,IsGlobal,Limitation.Id,Airlines,Departures,LimitationGroupId,LimitationId,ProductType,AllowOnlySelf,Rebate FROM dbo.T_PurchaseLimitationGroup LimitationGroup INNER JOIN dbo.T_PurchaseLimitation Limitation ON LimitationGroup.Id = Limitation.LimitationGroupId INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON Limitation.Id = Rebate.LimitationId WHERE CompanyId=@CompanyId; END ELSE IF @IsGlobalPurchase = 1 SELECT LimitationGroup.Id,IsGlobal,Limitation.Id,Airlines,Departures,LimitationGroupId,LimitationId,ProductType,AllowOnlySelf,Rebate FROM dbo.T_PurchaseLimitationGroup LimitationGroup INNER JOIN dbo.T_PurchaseLimitation Limitation ON LimitationGroup.Id = Limitation.LimitationGroupId INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON Limitation.Id = Rebate.LimitationId INNER JOIN dbo.T_IncomeGroup IncomeGroup ON LimitationGroup.IncomeGroupId = IncomeGroup.Id INNER JOIN dbo.T_IncomeGroupRelation Relation ON IncomeGroup.Id = Relation.IncomeGroup WHERE Relation.Company =@PurchaseId AND IncomeGroup.Company =@CompanyId"; using (var dbOperator = new DbOperator(Provider, ConnectionString)) { dbOperator.AddParameter("CompanyId", superId); dbOperator.AddParameter("PurchaseId", purchseId); view = restructCotor(dbOperator, sql); } return(view); }
string InsertPurchaseLimitationGroup(PurchaseLimitationGroup setting, DbOperator dbOperator) { string sql = @"INSERT INTO [dbo].[T_PurchaseLimitationGroup]([Id],[IsGlobal],[CompanyId],[IncomeGroupId]) VALUES(@GroupId,@IsGlobal,@CompanyId,@IncomeGroupId);"; dbOperator.AddParameter("GroupId", setting.Id); dbOperator.AddParameter("IsGlobal", setting.IsGlobal); if (setting.CompanyId.HasValue) { dbOperator.AddParameter("CompanyId", setting.CompanyId); } else { dbOperator.AddParameter("CompanyId", DBNull.Value); } if (setting.IncomeGroupId.HasValue) { dbOperator.AddParameter("IncomeGroupId", setting.IncomeGroupId); } else { dbOperator.AddParameter("IncomeGroupId", DBNull.Value); } sql += InsertPurchaseLimitation(setting.Limitation, dbOperator); return(sql); }
/// <summary> /// 新增全局或分组采买限制 /// </summary> /// <param name="setting">采买限制</param> /// <param name="operatorAccount">操作员</param> public static void InsertPurchaseLimitationGroup(PurchaseLimitationGroup setting, string operatorAccount) { var repository = Factory.CreatePurchaseRestrictionSettingRepository(); repository.InsertPurchaseRestrictionSetting(setting); string sql = string.Format("限制组Id:{0},是否是全局:{1},所属公司Id:{2},所属公司组Id:{3}", setting.Id.ToString(), setting.IsGlobal ? "是" : "否", setting.CompanyId.HasValue ? setting.CompanyId.ToString() : "", setting.IncomeGroupId.HasValue ? setting.IncomeGroupId.ToString() : ""); int i = 1; foreach (var item in setting.Limitation) { var normal = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Normal).FirstOrDefault(); var bargain = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Bargain).FirstOrDefault(); sql += string.Format("限制信息" + i + ":限制信息Id:{0},航空公司:{1},出发城市:{2}", item.Id.ToString(), item.Airlines, item.Departures); sql += string.Format("仅允许采购我发布的普通政策:{0},成人默认返点(普通政策):{1},仅允许采购我发布的特价政策:{2},成人默认返点(特价政策):{3}", normal.AllowOnlySelf ? "是" : "可以采取平台上其他普通政策", normal.Rebate.HasValue ? normal.Rebate.Value.ToString() : "", bargain.AllowOnlySelf ? "是" : "可以采取平台上其他特价政策", bargain.Rebate.HasValue ? bargain.Rebate.ToString() : ""); i++; } saveAddLog("用户组采购限制设置", sql, OperatorRole.User, setting.Id.ToString(), operatorAccount); }
PurchaseLimitationGroup restructCotor(DbOperator dbOperator, string sql) { PurchaseLimitationGroup view = null; List <Guid> limitationId = null; using (var reader = dbOperator.ExecuteReader(sql)) { while (reader.Read()) { Guid currentLimitationGroupId = reader.GetGuid(0); if (view == null || view.Id != currentLimitationGroupId) { view = new PurchaseLimitationGroup(reader.GetGuid(0)); if (!reader.IsDBNull(0)) { view.Id = reader.GetGuid(0); } view.IsGlobal = reader.GetBoolean(1); view.Limitation = new List <PurchaseLimitation>(); limitationId = new List <Guid>(); } Guid currentLimitationId = reader.GetGuid(2); if (!limitationId.Contains(currentLimitationId)) { var limitation = new PurchaseLimitation() { Id = reader.GetGuid(2), Airlines = reader.GetString(3), Departures = reader.GetString(4), LimitationGroupId = reader.GetGuid(5), Rebate = new List <PurchaseLimitationRebate>() }; view.Limitation.Add(limitation); limitationId.Add(currentLimitationId); } Guid currentRebateLimitationId = reader.GetGuid(6); PurchaseLimitationRateType type = (PurchaseLimitationRateType)reader.GetByte(7); var currentLimitation = view.Limitation.Where(limit => limit.Id == currentRebateLimitationId).FirstOrDefault(); if (currentLimitation.Rebate.Count() == 0 || currentLimitation.Rebate.All(it => it.LimitationId == currentRebateLimitationId && it.Type != type)) { var rebate = new PurchaseLimitationRebate() { LimitationId = currentRebateLimitationId, Type = type, AllowOnlySelf = reader.GetBoolean(8) }; if (!reader.IsDBNull(9)) { rebate.Rebate = reader.GetDecimal(9); } currentLimitation.Rebate.Add(rebate); } } } return(view); }
/// <summary> /// 修改全局采买限制 /// </summary> /// <param name="setting">全局采买限制</param> /// <param name="operatorAccount">操作员</param> public static void UpdatePurchaseRestrictionSettingGlobal(PurchaseLimitationGroup setting, PurchaseLimitationType orginalType, string operatorAccount) { var orginalSetting = QueryPurchaseLimitationGroup(setting.CompanyId.Value); var repository = Factory.CreatePurchaseRestrictionSettingRepository(); repository.UpdatePurchaseRestrictionSettingGlobal(setting); string orginalContent = ""; if (orginalType != PurchaseLimitationType.Global) { orginalContent = orginalType.GetDescription(); } if (orginalSetting != null) { orginalContent = string.Format("限制组Id:{0},是否是全局:{1},所属公司Id:{2},所属公司组Id:{3}", orginalSetting.Id.ToString(), orginalSetting.IsGlobal ? "是" : "否", orginalSetting.CompanyId.HasValue ? orginalSetting.CompanyId.ToString() : "", orginalSetting.IncomeGroupId.HasValue ? orginalSetting.IncomeGroupId.ToString() : ""); int i = 1; foreach (var item in orginalSetting.Limitation) { var normal = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Normal).FirstOrDefault(); var bargain = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Bargain).FirstOrDefault(); orginalContent += string.Format("限制信息" + i + ":限制信息Id:{0},航空公司:{1},出发城市:{2}", item.Id.ToString(), item.Airlines, item.Departures); orginalContent += string.Format("仅允许采购我发布的普通政策:{0},成人默认返点(普通政策):{1},仅允许采购我发布的特价政策:{2},成人默认返点(特价政策):{3}", normal.AllowOnlySelf ? "是" : "可以采取平台上其他普通政策", normal.Rebate.HasValue ? normal.Rebate.Value.ToString() : "", bargain.AllowOnlySelf ? "是" : "可以采取平台上其他特价政策", bargain.Rebate.HasValue ? bargain.Rebate.ToString() : ""); i++; } } string newContent = ""; if (setting != null) { newContent = string.Format("限制组Id:{0},是否是全局:{1},所属公司Id:{2},所属公司组Id:{3}", setting.Id.ToString(), setting.IsGlobal ? "是" : "否", setting.CompanyId.HasValue ? setting.CompanyId.ToString() : "", setting.IncomeGroupId.HasValue ? setting.IncomeGroupId.ToString() : ""); int i = 1; foreach (var item in setting.Limitation) { var normal = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Normal).FirstOrDefault(); var bargain = item.Rebate.Where(q => q.Type == PurchaseLimitationRateType.Bargain).FirstOrDefault(); newContent += string.Format("限制信息" + i + ":限制信息Id:{0},航空公司:{1},出发城市:{2}", item.Id.ToString(), item.Airlines, item.Departures); newContent += string.Format("仅允许采购我发布的普通政策:{0},成人默认返点(普通政策):{1},仅允许采购我发布的特价政策:{2},成人默认返点(特价政策):{3}", normal.AllowOnlySelf ? "是" : "可以采取平台上其他普通政策", normal.Rebate.HasValue ? normal.Rebate.Value.ToString() : "", bargain.AllowOnlySelf ? "是" : "可以采取平台上其他特价政策", bargain.Rebate.HasValue ? bargain.Rebate.ToString() : ""); i++; } } saveUpdateLog("全局采购设置", orginalContent, newContent, OperatorRole.User, setting.Id.ToString(), operatorAccount); }
public PurchaseLimitationGroup QueryPurchaseRestrictionSetting(Guid companyId) { PurchaseLimitationGroup view = null; string sql = @"SELECT LimitationGroup.Id,IsGlobal,Limitation.Id,Airlines,Departures,LimitationGroupId,LimitationId,ProductType,AllowOnlySelf,Rebate FROM dbo.T_PurchaseLimitationGroup LimitationGroup INNER JOIN dbo.T_PurchaseLimitation Limitation ON LimitationGroup.Id = Limitation.LimitationGroupId INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON Limitation.Id = Rebate.LimitationId WHERE CompanyId=@CompanyId"; using (var dbOperator = new DbOperator(Provider, ConnectionString)) { dbOperator.AddParameter("CompanyId", companyId); view = restructCotor(dbOperator, sql); } return(view); }
public void UpdatePurchaseRestrictionSettingGlobal(PurchaseLimitationGroup setting) { string sql = @"DELETE FROM Rebate FROM dbo.T_PurchaseLimitationGroup LimitationGroup INNER JOIN dbo.T_PurchaseLimitation Limitation ON Limitation.LimitationGroupId = LimitationGroup.Id INNER JOIN dbo.T_PurchaseLimitationRebate Rebate ON Limitation.Id = Rebate.LimitationId WHERE CompanyId= @CurrentCompanyId; DELETE FROM Limitation FROM dbo.T_PurchaseLimitationGroup LimitationGroup INNER JOIN dbo.T_PurchaseLimitation Limitation ON Limitation.LimitationGroupId = LimitationGroup.Id WHERE CompanyId= @CurrentCompanyId; DELETE FROM dbo.T_PurchaseLimitationGroup WHERE CompanyId= @CurrentCompanyId;"; using (var dbOperator = new DbOperator(Provider, ConnectionString)) { dbOperator.AddParameter("CurrentCompanyId", setting.CompanyId); sql += InsertPurchaseLimitationGroup(setting, dbOperator); dbOperator.ExecuteNonQuery(sql); } }
internal static IEnumerable <PolicyInfoBase> FilterByGroupLimitation(this IEnumerable <PolicyInfoBase> policies, PurchaseLimitationGroup limitationGroup, Guid superior) { if (!policies.Any()) { return(policies); } return(from p in policies let limitation = PolicyMatchServcie.GetPurchaseLimitationInfo(limitationGroup, p.Airline, p.Departure, p.PolicyType) where limitation == null || p is SpecialPolicyInfo || p.Owner == superior select p); }