Ejemplo n.º 1
0
        public IHttpActionResult GetHistory([FromBody] string userName)
        {
            var list = _repository.FindBy(s => s.UserName == userName).Select(i => new
            {
                count  = i.SalePos.Count,
                date   = i.DateSale,
                summa  = i.Summa,
                orders = i.SalePos.Select(p => p.ClassificationGood.Good.GoodNameRu)
            }).ToList();

            return(Ok(JsonConvert.SerializeObject(list)));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public GeneralResponse AddCourier(AddCourierRequest request, Guid CreateEmployeeID)
        {
            GeneralResponse response = new GeneralResponse();

            try
            {
                Courier courier = new Courier();
                courier.ID              = Guid.NewGuid();
                courier.CreateDate      = PersianDateTime.Now;
                courier.CreateEmployee  = _employeeRepository.FindBy(CreateEmployeeID);
                courier.Amount          = request.Amount;
                courier.BuildingUnits   = request.BuildingUnits;
                courier.CourierCost     = request.CourierCost;
                courier.CourierEmployee = null;
                courier.CourierStatuse  = Courier.CourierStatuses.Pending;
                courier.CourierType     = (Courier.CourierTypes)request.CourierType;
                courier.DeliverDate     = request.DeliverDate;
                courier.DeliverTime     = request.DeliverTime;
                courier.SaleComment     = request.SaleComment;
                courier.Sale            = _saleRepository.FindBy(request.SaleID);
                courier.RowVersion      = 1;

                Sale sale = _saleRepository.FindBy(request.SaleID);

                #region Getting Sale Details


                //Query query = new Query();

                //Criterion SaleIDCriteria = new Criterion("Sale.ID", sale.ID, CriteriaOperator.Equal);
                //query.Add(SaleIDCriteria);

                //ProductSaleDetail productSaleDetail = _productSaleDetailRepository.FindBy(query).FirstOrDefault();
                //CreditSaleDetail creditSaleDetail = _creditSaleDetailRepository.FindBy(query).FirstOrDefault();
                //UncreditSaleDetail uncreditSaleDetail = _uncreditSaleDetailRepository.FindBy(query).FirstOrDefault();

                //long  bonus = 0;
                //if (creditSaleDetail != null)
                //{

                //    Query query1 = new Query();

                //    Criterion SaleIDCriteria1 = new Criterion("CreditSaleDetail.ID", creditSaleDetail.ID, CriteriaOperator.Equal);
                //    query1.Add(SaleIDCriteria1);
                //    BonusComission temp= _bonusComissionRepository.FindBy(query1).FirstOrDefault();
                //    bonus += temp.Bonus;
                //}
                //if (productSaleDetail != null)
                //{
                //    Query query1 = new Query();

                //    Criterion SaleIDCriteria1 = new Criterion("ProductSaleDetail.ID", productSaleDetail.ID, CriteriaOperator.Equal);
                //    query1.Add(SaleIDCriteria1);
                //    BonusComission temp = _bonusComissionRepository.FindBy(query1).FirstOrDefault();
                //    bonus += temp.Bonus;
                //}
                //if (uncreditSaleDetail != null)
                //{
                //    Query query1 = new Query();
                //    Criterion SaleIDCriteria1 = new Criterion("UnCreditSaleDetail.ID", uncreditSaleDetail.ID, CriteriaOperator.Equal);
                //    query1.Add(SaleIDCriteria1);
                //    BonusComission temp = _bonusComissionRepository.FindBy(query1).FirstOrDefault();
                //    bonus += temp.Bonus;
                //}

                #endregion

                //courier.Bonus = bonus;
                courier.Sale.Couriers   = courier;
                courier.Sale.HasCourier = true;
                _courierRepository.Add(courier);


                _uow.Commit();
            }
            catch (Exception ex)
            {
                response.ErrorMessages.Add(ex.Message);
                if (ex.InnerException != null)
                {
                    response.ErrorMessages.Add(ex.InnerException.Message);
                }
            }

            return(response);
        }