public HttpResponseMessage LockShopOrder(Entities.TrnShopOrder objShopOrder)
        {
            try
            {
                HttpStatusCode responseStatusCode = HttpStatusCode.OK;
                String         responseMessage    = "";

                var currentUser     = from d in db.MstUsers where d.UserId == User.Identity.GetUserId() select d;
                var userForm        = from d in db.MstUserForms where d.UserId == currentUser.FirstOrDefault().Id&& d.SysForm.FormName.Equals("ShopOrderDetail") select d;
                var shopOrder       = from d in db.TrnShopOrders where d.Id == objShopOrder.Id select d;
                var item            = from d in db.MstArticles where d.Id == objShopOrder.ItemId select d;
                var unit            = from d in db.MstUnits where d.Id == objShopOrder.UnitId select d;
                var shopOrderStatus = from d in db.MstShopOrderStatus where d.Id == objShopOrder.ShopOrderStatusId select d;
                var shopGroup       = from d in db.MstShopGroups where d.Id == objShopOrder.ShopGroupId select d;
                var order           = from d in db.TrnShopOrders where d.SPNumber.Equals(objShopOrder.SPNumber) && d.IsLocked == true select d;

                if (!userForm.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "No rights.";
                }
                else if (!userForm.FirstOrDefault().CanLock)
                {
                    responseStatusCode = HttpStatusCode.BadRequest; responseMessage = "No lock rights.";
                }
                else if (!shopOrder.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Reference not found.";
                }
                else if (shopOrder.FirstOrDefault().IsLocked)
                {
                    responseStatusCode = HttpStatusCode.BadRequest; responseMessage = "Already locked.";
                }
                else if (!item.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Item not found.";
                }
                else if (!unit.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Unit not found.";
                }
                else if (!shopOrderStatus.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Shop order status not found.";
                }
                else if (!shopGroup.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Shop group not found.";
                }
                else if (order.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Shop order number: " + objShopOrder.SPNumber + " is already exist.";
                }
                else
                {
                    var lockShopOrder = shopOrder.FirstOrDefault();
                    lockShopOrder.SPDate              = Convert.ToDateTime(objShopOrder.SPDate);
                    lockShopOrder.SPNumber            = objShopOrder.SPNumber;
                    lockShopOrder.ItemId              = item.FirstOrDefault().Id;
                    lockShopOrder.Quantity            = objShopOrder.Quantity;
                    lockShopOrder.UnitId              = unit.FirstOrDefault().Id;
                    lockShopOrder.Amount              = objShopOrder.Amount;
                    lockShopOrder.ShopOrderStatusId   = shopOrderStatus.FirstOrDefault().Id;
                    lockShopOrder.ShopOrderStatusDate = Convert.ToDateTime(objShopOrder.ShopOrderStatusDate);
                    lockShopOrder.ShopGroupId         = shopGroup.FirstOrDefault().Id;
                    lockShopOrder.Particulars         = objShopOrder.Particulars;
                    lockShopOrder.IsLocked            = true;
                    lockShopOrder.UpdatedById         = currentUser.FirstOrDefault().Id;
                    lockShopOrder.UpdatedDateTime     = DateTime.Now;
                    db.SubmitChanges();
                }

                return(Request.CreateResponse(responseStatusCode, responseMessage));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public HttpResponseMessage AddShopOrder(Entities.TrnShopOrder objShopOrder)
        {
            try
            {
                HttpStatusCode responseStatusCode = HttpStatusCode.OK;
                String         responseMessage    = "";

                var currentUser = from d in db.MstUsers where d.UserId == User.Identity.GetUserId() select d;
                var userForm    = from d in db.MstUserForms where d.UserId == currentUser.FirstOrDefault().Id&& d.SysForm.FormName.Equals("ShopOrderList") select d;
                var item        = from d in db.MstArticles where d.ArticleTypeId == 1 && d.IsLocked == true select d;
                IQueryable <Data.MstUnit> unit = null;
                if (item.Any())
                {
                    unit = from d in db.MstUnits where d.Id == item.FirstOrDefault().UnitId select d;
                }
                var shopOrderStatus = from d in db.MstShopOrderStatus select d;
                var shopGroup       = from d in db.MstShopGroups select d;

                if (!userForm.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "No rights.";
                }
                else if (!userForm.FirstOrDefault().CanAdd)
                {
                    responseStatusCode = HttpStatusCode.BadRequest; responseMessage = "No add rights.";
                }
                else if (!item.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Item not found.";
                }
                else if (!unit.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Unit not found.";
                }
                else if (!shopOrderStatus.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Shop order status not found.";
                }
                else if (!shopGroup.Any())
                {
                    responseStatusCode = HttpStatusCode.NotFound; responseMessage = "Shop group not found.";
                }
                else
                {
                    Data.TrnShopOrder newShopOrder = new Data.TrnShopOrder
                    {
                        BranchId            = currentUser.FirstOrDefault().BranchId,
                        SPNumber            = "NA",
                        SPDate              = DateTime.Today,
                        ItemId              = item.OrderByDescending(d => d.Article).FirstOrDefault().Id,
                        Quantity            = 0,
                        UnitId              = unit.FirstOrDefault().Id,
                        Amount              = 0,
                        ShopOrderStatusId   = shopOrderStatus.FirstOrDefault().Id,
                        ShopOrderStatusDate = DateTime.Today,
                        ShopGroupId         = shopGroup.FirstOrDefault().Id,
                        Particulars         = "NA",
                        Status              = null,
                        IsPrinted           = false,
                        IsLocked            = false,
                        CreatedById         = currentUser.FirstOrDefault().Id,
                        CreatedDateTime     = DateTime.Now,
                        UpdatedById         = currentUser.FirstOrDefault().Id,
                        UpdatedDateTime     = DateTime.Now
                    };

                    db.TrnShopOrders.InsertOnSubmit(newShopOrder);
                    db.SubmitChanges();

                    responseMessage = newShopOrder.Id.ToString();
                }

                return(Request.CreateResponse(responseStatusCode, responseMessage));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }