public HttpResponseMessage GetSingleTransaction(int id)
        {
            db.Database.Log = (message) => Debug.WriteLine(message);

            var token = Request.Headers;

            if (!token.Contains(Authentication.TOKEN_KEYWORD))
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden, Responses.CreateForbiddenResponseMessage()));
            }
            string accessToken = Request.Headers.GetValues(Authentication.TOKEN_KEYWORD).FirstOrDefault();

            if (Authentication.IsAuthenticated(accessToken))
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden, Responses.CreateForbiddenResponseMessage()));
            }

            TransactionHd transactionHd = db.TransactionHds.Find(id);

            if (transactionHd == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, Responses.CreateNotFoundResponseMessage()));
            }

            transactionHd.TransactionDts = db.TransactionDts.Where(s => s.TransHdID == transactionHd.TransHdID).ToList();
            return(Request.CreateResponse(HttpStatusCode.OK, transactionHd));
        }
        public HttpResponseMessage UpdateTransactionById(int id, TransactionHd transactionHd)
        {
            db.Database.Log = (message) => Debug.WriteLine(message);

            var token = Request.Headers;

            if (!token.Contains(Authentication.TOKEN_KEYWORD))
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden, Responses.CreateForbiddenResponseMessage()));
            }
            string accessToken = Request.Headers.GetValues(Authentication.TOKEN_KEYWORD).FirstOrDefault();

            if (Authentication.IsAuthenticated(accessToken))
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden, Responses.CreateForbiddenResponseMessage()));
            }

            if (id != transactionHd.TransHdID)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            bool flag = false;

            switch (transactionHd.FgStatus)
            {
            case "O":
                break;

            case "S":
                foreach (var trdtls in transactionHd.TransactionDts)
                {
                    var transDtOld = db.TransactionDts.Find(trdtls.TransDtID);
                    transDtOld.ReceiveQty = trdtls.ReceiveQty;
                    transDtOld.UpdDate    = DateTime.Now;
                    db.SaveChanges();
                }

                TransactionHd oldTransactionHd = db.TransactionHds.Find(id);
                oldTransactionHd.FgStatus = "C";
                oldTransactionHd.UpdDate  = DateTime.Now;

                db.SaveChanges();
                flag = true;
                break;
            }

            return(flag ? Request.CreateResponse(HttpStatusCode.Accepted) : Request.CreateResponse(HttpStatusCode.NotAcceptable));
        }
        public HttpResponseMessage CreateNewTransactions(TransactionHd transactionHd)
        {
            db.Database.Log = (message) => Debug.WriteLine(message);

            var token = Request.Headers;

            if (!token.Contains(Authentication.TOKEN_KEYWORD))
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden, Responses.CreateForbiddenResponseMessage()));
            }
            string accessToken = Request.Headers.GetValues(Authentication.TOKEN_KEYWORD).FirstOrDefault();

            if (Authentication.IsAuthenticated(accessToken))
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden, Responses.CreateForbiddenResponseMessage()));
            }

            List <TransactionDt> transactionDtData = new List <TransactionDt>();

            foreach (var trdtls in transactionHd.TransactionDts)
            {
                TransactionDt transactionDt = new TransactionDt()
                {
                    ProductHdID      = trdtls.ProductHdID,
                    ProductSize      = trdtls.ProductSize,
                    TotalPrice       = trdtls.TotalPrice,
                    Qty              = trdtls.Qty,
                    QtyOri           = trdtls.QtyOri,
                    ReceiveQty       = trdtls.ReceiveQty,
                    AddDiscountType  = trdtls.AddDiscountType,
                    AddDiscountValue = trdtls.AddDiscountValue,
                    AddDiscountDesc  = trdtls.AddDiscountDesc,
                    DiscountID       = trdtls.DiscountID,
                    CreatedAt        = DateTime.Now,
                    UpdDate          = DateTime.Now,
                    ActionDate       = DateTime.Now
                };
                transactionDtData.Add(transactionDt);
            }

            var newTransactionData = new TransactionHd()
            {
                TransNo        = Generator.GenerateInvoiceNumber(),
                TransDate      = DateTime.Now,
                CounterID      = transactionHd.CounterID,
                CustomerID     = transactionHd.CustomerID,
                FgStatus       = "O",
                TotalDiscount  = transactionHd.TotalDiscount,
                TotalPrice     = transactionHd.TotalPrice,
                CreatedAt      = DateTime.Now,
                UpdDate        = DateTime.Now,
                TransactionDts = transactionDtData
            };

#pragma warning di sable CS0472 // The result of the expression is always the same since a value of this type is never equal to 'null'
            if (transactionHd.CounterID != null)
#pragma warning restore CS0472  // The result of the expression is always the same since a value of this type is never equal to 'null'
            {
                newTransactionData.CounterID = transactionHd.CounterID;
            }
#pragma warning disable CS0472 // The result of the expression is always the same since a value of this type is never equal to 'null'
            else if (transactionHd.CustomerID != null)
#pragma warning restore CS0472 // The result of the expression is always the same since a value of this type is never equal to 'null'
            {
                newTransactionData.CustomerID = transactionHd.CustomerID;
            }

            db.TransactionHds.Add(newTransactionData);
            db.SaveChanges();

            return(Request.CreateResponse(HttpStatusCode.Created));
        }