Ejemplo n.º 1
0
        public OrderPayment Save(OrderPaymentDTO dto, long userId)
        {
            var date        = DateTime.Now.Date;
            var listTransac = Manager.OrderDetailManager.Value.Query.Value.OrderDetailForPayment(dto.OrderId, dto.UserId);
            var listPayment = Manager.Query.Value.TransformToList().Where(x => x.OrderId == dto.OrderId);

            if (listTransac.Count == 0)
            {
                throw new Exception("you don't have any order");
            }

            foreach (var valPay in listPayment)
            {
                foreach (var valTrans in listTransac)
                {
                    if (valPay.UserId == valTrans.UserId && valTrans.OrderId == valTrans.OrderId)
                    {
                        var update = Manager.Updater.Value.Update(dto, userId);
                        return(update);
                    }
                }
            }

            var grandTotal  = listTransac.Select(x => x.TotalPrice).Sum();
            var cashback    = dto.Payment - grandTotal;
            var paymentDate = dto.OrderPaymentDate;
            var notePayment = dto.Note ?? "-";

            var newEntity = new OrderPayment
            {
                OrderPaymentCode = Guid.NewGuid().ToString(),
                OrderPaymentDate = paymentDate,
                PaymentStatus    = (int)ChangeState.None,
                UserId           = dto.UserId,
                OrderId          = dto.OrderId,
                Payment          = dto.Payment,
                PaymentMethod    = dto.PaymentMethod,
                GrandTotal       = grandTotal,
                Cashback         = cashback,
                Note             = notePayment,
                CreatedBy        = (int)userId,
                CreatedDate      = date,
                UpdatedBy        = (int)userId,
                UpdatedDate      = date
            };


            Manager.Database.OrderPayments.Add(newEntity);
            Manager.Database.SaveChanges();

            return(newEntity);
        }
Ejemplo n.º 2
0
        public OrderPayment Update(OrderPaymentDTO dto, long userId)
        {
            var existingPayment = Manager.Query.Value.All();
            var exist           = existingPayment.FirstOrDefault(scope => scope.OrderId == dto.OrderId && scope.UserId == dto.UserId);
            var orderStarted    = Manager.OrderDetailManager.Value.OrderManager.Value.Query.Value.TransformToList()
                                  .FirstOrDefault(x => x.OrderId == dto.OrderId);

            if (exist == null)
            {
                throw new Exception("Your order is doesn't exist :)");
            }
            else if (orderStarted.Status == OrderState.Close)
            {
                throw new Exception("unfortunately, order today have been closed");
            }
            else
            {
                var listTransac = Manager.OrderDetailManager.Value.Query.Value.OrderDetailForPayment(dto.OrderId, dto.UserId);

                exist.GrandTotal = listTransac.Select(x => x.TotalPrice).Sum();
                exist.Payment    = (dto.Payment == 0) ? exist.Payment : dto.Payment;
                exist.Cashback   = exist.Payment - exist.GrandTotal;

                var paymentStat = ChangeState.OnHold;

                if (exist.Cashback == 0)
                {
                    paymentStat = ChangeState.OnComplete;
                }
                else if (exist.Cashback < 0)
                {
                    paymentStat = ChangeState.None;
                }
                else
                {
                    paymentStat = ChangeState.OnHold;
                }

                exist.PaymentStatus = (int)paymentStat;
                exist.UpdatedBy     = userId;
                exist.Note          = dto.Note ?? exist.Note;
                exist.UpdatedDate   = DateTime.UtcNow;

                Manager.Database.SaveChanges();
            }
            return(exist);
        }
Ejemplo n.º 3
0
        public OrderPayment Submit(OrderPaymentDTO dto, long userId)
        {
            var exist = Manager.Query.Value.All().FirstOrDefault(scope => scope.OrderId == dto.OrderId && scope.UserId == dto.UserId);

            if (exist == null)
            {
                throw new Exception("Your order is doesn't exist :)");
            }
            else
            {
                if (exist.Cashback < 0)
                {
                    throw new Exception("you have a debt");
                }

                exist.PaymentStatus = (int)ChangeState.OnComplete;
                exist.UpdatedBy     = userId;
                exist.UpdatedDate   = DateTime.UtcNow;
                Manager.Database.SaveChanges();
            }
            return(exist);
        }