public GetGeneralResponse <IEnumerable <CustomerLevelView> > GetLevelHistory(Guid customerID, int pageSize, int pageNumber) { Infrastructure.Querying.Query query = new Infrastructure.Querying.Query(); Criterion criteria = new Criterion("Customer.ID", customerID, CriteriaOperator.Equal); query.Add(criteria); int index = (pageNumber - 1) * pageSize; int count = pageSize; Infrastructure.Domain.Response <CustomerLevel> customerLevelResponse = _customerLevelRepository.FindBy(query, index, count); GetGeneralResponse <IEnumerable <CustomerLevelView> > response = new GetGeneralResponse <IEnumerable <CustomerLevelView> >(); response.data = customerLevelResponse.data.ConvertToCustomerLevelViews(); response.totalCount = customerLevelResponse.totalCount; string temp = response.data.FirstOrDefault().CreateDate; var list = response.data.ToArray(); if (temp != null) { for (int i = 1; i <= list.Length - 1; i++) { if (i == 1) { list[i - 1].WaitingDays = PersianDateTime.DateDiff(temp, list[i].CreateDate); } else { list[i - 1].WaitingDays = PersianDateTime.DateDiff(list[i - 1].CreateDate, list[i].CreateDate); } } } list.Last().WaitingDays = PersianDateTime.DateDiff(list.Last().CreateDate, PersianDateTime.Now); response.data = list; return(response); }
private CheckConditionResponse CheckLevelCondition(Level newLevel, Customer customer) { IEnumerable <Condition> conditions = newLevel.Conditions; CheckConditionResponse response = new CheckConditionResponse(); Infrastructure.Querying.Query query = new Infrastructure.Querying.Query(); Criterion criteria = new Criterion("Customer.ID", customer.ID, CriteriaOperator.Equal); query.Add(criteria); IEnumerable <Sale> sales = _saleRepository.FindBy(query); response.CanEnter = true; foreach (Condition condition in conditions) { // اگر کوئری از نوع هایبرنیت باشد if (condition.nHibernate) { bool canEnter = _customerRepository.CheckCondition(condition, newLevel, customer); response.CanEnter = response.CanEnter & canEnter; if (!canEnter) { response.ErrorMessages.Add(condition.ErrorText); } } // اگر کوئری از نوع هایبرنیت نباشد else { // StatusIsAdameEmkan // وضعیت مرکز تحت پوشش باشد if (condition.QueryText == "CenterStatusIsSupport") { response.CanEnter = customer.Center.StatusKey == "Support" ? true : false; response.ErrorMessages.Add(condition.ErrorText); } // وضعیت مرکز تحت پوشش نباشد if (condition.QueryText == "StatusIsNotSupport") { response.CanEnter = customer.Center.StatusKey == "NotSupport" ? true : false; response.ErrorMessages.Add(condition.ErrorText); } // وضعیت مرکز عدم امکان موقت باشد if (condition.QueryText == "StatusIsAdameEmkan") { response.CanEnter = customer.Center.StatusKey == "AdameEmkan" ? true : false; response.ErrorMessages.Add(condition.ErrorText); } // کالا تحویل نشده نداشته باشد و یا برگشت شده باشد if (condition.QueryText == "HasNoUndeliveredProductsOrAllRollbacked") { foreach (var sale in sales) { foreach (var saleDetail in sale.ProductSaleDetails) { // تحویل نشده ی برگشت نشده فالس است if (!saleDetail.Delivered && !saleDetail.Rollbacked && !saleDetail.IsRollbackDetail) { response.CanEnter = false; } } //foreach (var saleDetail in sale.CreditSaleDetails) //{ // // تحویل نشده ی برگشت نشده فالس است // if (!saleDetail.Delivered && !saleDetail.Rollbacked && !saleDetail.IsRollbackDetail) // { // response.CanEnter = false; // } //} //foreach (var saleDetail in sale.UncreditSaleDetails) //{ // // تحویل نشده ی برگشت نشده فالس است // if (!saleDetail.Delivered && !saleDetail.Rollbacked && !saleDetail.IsRollbackDetail) // { // response.CanEnter = false; // } //} response.ErrorMessages.Add(condition.ErrorText); } } // خدمات اعتباری تحویل نشده نداشته باشد و یا برگشت شده باشد else if (condition.QueryText == "HasNoUndeliveredCreditOrAllRollbacked") { foreach (var sale in sales) { foreach (var saleDetail in sale.CreditSaleDetails) { // تحویل نشده ی برگشت نشده فالس است if (!saleDetail.Delivered && !saleDetail.Rollbacked && !saleDetail.IsRollbackDetail) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } } } // خدمات غیر اعتباری تحویل نشده نداشته باشد و یا برگشت شده باشد else if (condition.QueryText == "HasNoUndeliveredUncreditOrAllRollbacked") { foreach (var sale in sales) { foreach (var saleDetail in sale.UncreditSaleDetails) { // تحویل نشده ی برگشت نشده فالس است if (!saleDetail.Delivered && !saleDetail.Rollbacked && !saleDetail.IsRollbackDetail) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } } } // آخرین خدمات اعتباری که فروخته شده منقضی شده باشد else if (condition.QueryText == "LastCreditExpired") { CreditSaleDetail saleDetail = sales.OrderByDescending(o => o.CreateDate).FirstOrDefault().CreditSaleDetails.OrderByDescending(o => o.CreateDate).FirstOrDefault(); // شرط عدم انقضاء if (saleDetail.CreditService.ExpDays >= PersianDateTime.DateDiff(PersianDateTime.Now, saleDetail.CreateDate)) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } //آخرین خدمات اعتباری که فروخته شده منقضی نشده باشد else if (condition.QueryText == "LastCreditNotExpired") { CreditSaleDetail saleDetail = sales.OrderByDescending(o => o.CreateDate).FirstOrDefault().CreditSaleDetails.OrderByDescending(o => o.CreateDate).FirstOrDefault(); // شرط انقضاء if (saleDetail.CreditService.ExpDays < PersianDateTime.DateDiff(PersianDateTime.Now, saleDetail.CreateDate)) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } // شبکه انتخاب شده برای مشتری تحت پوشش باشد else if (condition.QueryText == "NetworkOfCustomerIsSupport") { if (customer.Network != null) { if (!customer.Network.NetworkCenters.Where(w => w.Status == NetworkCenterStatus.Support && w.Center == customer.Center).Any()) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } else { response.CanEnter = false; response.ErrorMessages.Add("برای انتقال مشتری به این مرحله ، حتما باید شبکه مشتری مشخص باشد. لطفا در ثبت نام کامل ، شبکه مشتری را انتخاب کنید."); } } // شبکه انتخاب شده برای مشتری عدم پوشش باشد else if (condition.QueryText == "NetworkOfCustomerIsNotSupport") { if (!customer.Network.NetworkCenters.Where(w => w.Status == NetworkCenterStatus.NotSupport && w.Center == customer.Center).Any()) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } // شبکه انتخاب شده برای مشتری عدم امکان موقت باشد else if (condition.QueryText == "NetworkOfCustomerIsAdameEmkan") { if (!customer.Network.NetworkCenters.Where(w => w.Status == NetworkCenterStatus.NotSupport && w.Center == customer.Center).Any()) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } // امکان تحویل حداقل یک کالا یا خدمات فروخته شده وجود داشته باشد else if (condition.QueryText == "CanDeliverAtLeastOnItem") { foreach (Sale sale in sales) { if (sale.Closed) { foreach (var saleDetail in sale.CreditSaleDetails) { // جمع سطر کمتر از مانده قابل تحویل باشد if (saleDetail.LineTotal <= customer.CanDeliverCost) { response.CanEnter = true; } } foreach (var saleDetail in sale.UncreditSaleDetails) { // جمع سطر کمتر از مانده قابل تحویل باشد if (saleDetail.LineTotal <= customer.CanDeliverCost) { response.CanEnter = true; } } foreach (var saleDetail in sale.ProductSaleDetails) { // جمع سطر کمتر از مانده قابل تحویل باشد if (saleDetail.LineTotal <= customer.CanDeliverCost) { response.CanEnter = true; } } response.ErrorMessages.Add(condition.ErrorText); } } } else if (condition.QueryText == "HasNoOpenCSupport") { if (customer.Supports.Any()) { IEnumerable <Support> support = customer.Supports.Where(x => x.SupportStatus.IsLastSupportState != true); if (support.Count() > 0) { response.CanEnter = false; response.ErrorMessages.Add(condition.ErrorText); } } } } } return(response); }