using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CY.IDAL.Inquiry;
using CY.Infrastructure.Common;
using System.Transactions;
using CY.Model;
using System.Data.SqlClient;
using System.Data;
using CY.Model.Inquiry;
namespace CY.SQLDAL
{
///
/// 黑白印件快速询价操作接口--SQL实现
///
public class BlackAndWhiteFastCostDAL : IBlackAndWhiteFastCostDAL
{
Database _dataBase = null;
public BlackAndWhiteFastCostDAL()
{
_dataBase = new Database();
}
///
/// 获取黑白印件的设置信息
///
///
///
public IList GetModelList(Guid inquiryId)
{
string selectTarget = @"
a.GramWeight,a.SingleOrDouble,a.PaperSize,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=500
and b.FirmId='{0}'
) AS Price500,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=1000
and b.FirmId='{0}'
) AS Price1000,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=2000
and b.FirmId='{0}'
) AS Price2000,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=3000
and b.FirmId='{0}'
) AS Price3000,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=5000
and b.FirmId='{0}'
) AS Price5000,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=10000
and b.FirmId='{0}'
) AS Price10000,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=20000
and b.FirmId='{0}'
) AS Price20000,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=50000
and b.FirmId='{0}'
) AS Price50000,
(
SELECT MAX(b.Price) FROM Inquiry_BlackAndWhiteFastCost b WHERE b.GramWeight=a.GramWeight AND b.SingleOrDouble=a.SingleOrDouble AND b.PaperSize=a.PaperSize AND b.PrintCount=100000
and b.FirmId='{0}'
) AS Price100000 ";
selectTarget = string.Format(selectTarget, inquiryId.ToString());
string fromSouce = " Inquiry_BlackAndWhiteFastCost a ";
string condition = " a.FirmId='" + inquiryId.ToString() + "' GROUP BY a.GramWeight,a.SingleOrDouble,a.PaperSize ORDER BY a.GramWeight,a.SingleOrDouble,a.PaperSize";
IList result = _dataBase.SelectModel(selectTarget, fromSouce, condition);
return result;
}
///
/// 保存黑白印件快速询价
///
///
///
///
public bool SaveModelList(IList list, InquiryCondition inquiryCondition)
{
bool isSuccess = true;
using (TransactionScope scope = new TransactionScope())
{
//执行复制全部询价参数数据
if (inquiryCondition.IsFirstSave())
{
new CommonInquiryHelper(_dataBase).CopyALLInquiryParameter(inquiryCondition);
}
foreach (Inquiry_BlackAndWhiteFastCost model in list)
{
isSuccess = UpdateModel(model);
if (!isSuccess)
break;
}
if (isSuccess)
scope.Complete();
}
return isSuccess;
}
///
/// 新增黑白印件快速询价
///
///
///
public bool InserModel(Infrastructure.Domain.IAggregateRoot model)
{
return true;
}
///
/// 更新黑白印件快速询价
///
///
///
public bool UpdateModel(Infrastructure.Domain.IAggregateRoot model)
{
Model.Inquiry_BlackAndWhiteFastCost trueModel = model as Model.Inquiry_BlackAndWhiteFastCost;
if (trueModel == null)
{
return false;
}
SqlParameter[] parameters = {
new SqlParameter("@FirmId", SqlDbType.UniqueIdentifier,16),
new SqlParameter("@GramWeight", SqlDbType.Int,4),
new SqlParameter("@SingleOrDouble", SqlDbType.VarChar,20),
new SqlParameter("@PaperSize", SqlDbType.VarChar,20),
new SqlParameter("@PrintCount", SqlDbType.Int,4),
new SqlParameter("@Price", SqlDbType.Money,8),
new SqlParameter("@Operater", SqlDbType.VarChar,20),
new SqlParameter("@LastUpdateTime", SqlDbType.DateTime)
};
parameters[0].Value = trueModel.FirmId;
parameters[1].Value = trueModel.GramWeight;
parameters[2].Value = trueModel.SingleOrDouble;
parameters[3].Value = trueModel.PaperSize;
parameters[4].Value = trueModel.PrintCount;
parameters[5].Value = trueModel.Price;
parameters[6].Value = trueModel.Operater;
parameters[7].Value = trueModel.LastUpdateTime;
try
{
_dataBase.Query("Inquiry_BlackAndWhiteFastCost_Update", CommandType.StoredProcedure, parameters);
}
catch (Exception ex)
{
throw ex;
}
return true;
}
///
/// 删除黑白印件快速询价
///
///
///
public bool DeleteModel(Infrastructure.Domain.IAggregateRoot model)
{
throw new NotImplementedException();
}
///
/// 获取黑白印件价格,供询价用
///
///
///
///
///
///
public decimal GetBlackAndWhiteFastPrice(int gramWeight, string singleOrdouble,string pageSize, int printCount, Guid inquiryId)
{
string selectTarget = " Price ";
string fromSouce = " Inquiry_BlackAndWhiteFastCost ";
string condition = " FirmId='" + inquiryId.ToString() + "' and gramWeight=" + gramWeight + " and singleOrdouble='" + singleOrdouble + "' and paperSize='" + pageSize + "' and printCount=" + printCount;
IList result = _dataBase.SelectModel(selectTarget, fromSouce, condition);
if (result != null && result.Count > 0)
{
return result[0].Price;
}
else
{
return 0;
}
}
}
}