public void UpdateAssignWork()
        {
            try
            {
                string workAssignIDObj = hdnAssignWorkID.Value;
                if (!string.IsNullOrEmpty(workAssignIDObj))
                {
                    int workAssignID   = Convert.ToInt32(workAssignIDObj);
                    var workCollection = context.WorkAssigns.Where(x => x.IsActive == true && x.WorkAssignID == workAssignID);
                    if (workCollection.Count() > 0)
                    {
                        using (TransactionScope scope = new TransactionScope())
                        {
                            Database.WorkAssign workAssign = workCollection.FirstOrDefault();
                            workAssign.BillNo         = ddlBillNo.SelectedItem.Text;
                            workAssign.CompletedCount = txtCompletedCount.Text == "" ? 0 : Convert.ToInt32(txtCompletedCount.Text);
                            workAssign.ModifiedBy     = currentUserName;
                            workAssign.ModifiedDate   = DateTime.Now;
                            workAssign.EmployeeID     = Convert.ToInt32(ddlEmployeeName.SelectedValue);
                            if (!string.IsNullOrEmpty(txtExpectedDeliveryDate.Text))
                            {
                                workAssign.ExpectedCompletionDate = Convert.ToDateTime(txtExpectedDeliveryDate.Text);
                            }
                            else
                            {
                                workAssign.ExpectedCompletionDate = null;
                            }
                            workAssign.IsComplete = chkIsWorkCompleted.Checked;
                            workAssign.Remarks    = txtRemarks.Text;
                            if (!string.IsNullOrEmpty(txtWorkAssignDate.Text))
                            {
                                workAssign.WorkAssignDate = Convert.ToDateTime(txtWorkAssignDate.Text);
                            }
                            else
                            {
                                workAssign.WorkAssignDate = null;
                            }
                            workAssign.WorkCount  = txtItemCount.Text == "" ? 0 : Convert.ToInt32(txtItemCount.Text);
                            workAssign.WorkTypeID = Convert.ToInt32(ddlWorkType.SelectedValue);
                            workAssign.IsActive   = true;
                            workAssign.TotalCost  = txtTotalCost.Text == "" ? 0 : Convert.ToDecimal(txtTotalCost.Text);
                            var totalAmt  = txtTotalCost.Text == "" ? 0 : Convert.ToDecimal(txtTotalCost.Text);
                            var paidAmt   = txtAmountPaid.Text == "" ? 0 : Convert.ToDecimal(txtAmountPaid.Text);
                            var remAmount = totalAmt - paidAmt;
                            workAssign.RemainingCost = remAmount;
                            context.SaveChanges();

                            if (rptrData.Items.Count > 0)
                            {
                                foreach (RepeaterItem rptrItem in rptrData.Items)
                                {
                                    if (rptrItem.Visible)
                                    {
                                        int workAssignInventoryUsedID = Convert.ToInt32(((HiddenField)rptrItem.FindControl("hdnWorkassignUsedID")).Value);
                                        var invUsedObj = context.WorkAssignInventoryUseds.Where(x => x.IsActive == true && x.WorkAssignInventoryUsedID == workAssignInventoryUsedID);
                                        if (invUsedObj.Count() > 0)
                                        {
                                            WorkAssignInventoryUsed workAssUID = invUsedObj.SingleOrDefault();
                                            int?oldCount = workAssUID.InventoryUsedCount;
                                            workAssUID.InventoryTypeID    = Convert.ToInt32(((HiddenField)rptrItem.FindControl("hdnItemID")).Value);
                                            workAssUID.InventoryUsedCount = Convert.ToInt32(((Label)rptrItem.FindControl("lblQuantity")).Text);
                                            workAssUID.ModifiedBy         = currentUserName;
                                            workAssUID.ModifiedDate       = DateTime.Now.Date;
                                            workAssUID.IsActive           = true;
                                            workAssUID.WorkAssignID       = workAssign.WorkAssignID;
                                            context.SaveChanges();

                                            Database.InventoryType currentInventory = context.InventoryTypes.Where(x => x.IsActive == true && x.InventoryTypeId == workAssUID.InventoryTypeID).SingleOrDefault();
                                            if (currentInventory != null)
                                            {
                                                var currentQuantity = currentInventory.InventoryCount == null ? 0 : currentInventory.InventoryCount;
                                                currentInventory.InventoryCount = currentQuantity + (oldCount - workAssUID.InventoryUsedCount);
                                                context.SaveChanges();
                                            }
                                        }
                                    }
                                    else
                                    {
                                        int workAssignInventoryUsedID = Convert.ToInt32(((HiddenField)rptrItem.FindControl("hdnWorkassignUsedID")).Value);
                                        var invUsedObj = context.WorkAssignInventoryUseds.Where(x => x.IsActive == true && x.WorkAssignInventoryUsedID == workAssignInventoryUsedID);
                                        if (invUsedObj.Count() > 0)
                                        {
                                            WorkAssignInventoryUsed workAssUID = invUsedObj.SingleOrDefault();
                                            workAssUID.ModifiedBy   = currentUserName;
                                            workAssUID.ModifiedDate = DateTime.Now.Date;
                                            workAssUID.IsActive     = false;
                                            context.SaveChanges();

                                            Database.InventoryType currentInventory = context.InventoryTypes.Where(x => x.IsActive == true && x.InventoryTypeId == workAssUID.InventoryTypeID).SingleOrDefault();
                                            if (currentInventory != null)
                                            {
                                                var currentQuantity = currentInventory.InventoryCount == null ? 0 : currentInventory.InventoryCount;
                                                currentInventory.InventoryCount = currentQuantity + workAssUID.InventoryUsedCount;
                                                context.SaveChanges();
                                            }
                                        }
                                    }
                                }
                            }

                            var salCollection = context.Salaries.Where(x => x.IsActive == true && x.WorkAssignID == workAssign.WorkAssignID);
                            if (salCollection.Count() > 0)
                            {
                                Salary EmpSalary = salCollection.FirstOrDefault();
                                EmpSalary.AmountPaid     = txtAmountPaid.Text == "" ? 0 : Convert.ToDecimal(txtAmountPaid.Text);
                                EmpSalary.AmountPaidDate = txtPaidDate.Text == "" ? DateTime.Now.Date : Convert.ToDateTime(txtPaidDate.Text);
                                EmpSalary.ModifiedBy     = currentUserName;
                                EmpSalary.ModifiedDate   = DateTime.Now;
                                EmpSalary.EmployeeID     = Convert.ToInt32(ddlEmployeeName.SelectedValue);
                                EmpSalary.Remarks        = txtRemarks.Text;
                                EmpSalary.WorkAssignID   = workAssign.WorkAssignID;
                                EmpSalary.IsActive       = true;
                                context.SaveChanges();
                            }

                            lblMessage.Text      = "Assign Successfully";
                            lblMessage.ForeColor = Color.Green;
                            scope.Complete();
                        }
                    }
                    else
                    {
                        lblMessage.Text      = "Work Assign ID Not Found ";
                        lblMessage.ForeColor = Color.Red;
                    }
                }
                else
                {
                    lblMessage.Text      = "Work Assign ID Not in proper format ";
                    lblMessage.ForeColor = Color.Red;
                }
            }
            catch
            {
                throw;
            }
        }
        public void FillForm()
        {
            try
            {
                string assignWorkIDObj = Request.QueryString[Constants.queryAssignWorkID];

                if (!string.IsNullOrEmpty(assignWorkIDObj))
                {
                    int assignWorkID = Convert.ToInt32(assignWorkIDObj);
                    if (assignWorkID > 0)
                    {
                        var assignWorkCollection = context.WorkAssigns.Where(x => x.IsActive == true && x.WorkAssignID == assignWorkID);
                        if (assignWorkCollection.Count() > 0)
                        {
                            Database.WorkAssign workAssign = assignWorkCollection.FirstOrDefault();

                            txtCompletedCount.Text       = Convert.ToString(workAssign.CompletedCount);
                            txtExpectedDeliveryDate.Text = workAssign.ExpectedCompletionDate == null ? "" : workAssign.ExpectedCompletionDate.Value.ToString(Constants.DateFormatDatePicker);
                            txtItemCount.Text            = Convert.ToString(workAssign.WorkCount);
                            txtRemarks.Text               = workAssign.Remarks;
                            txtTotalCost.Text             = Convert.ToString(workAssign.TotalCost);
                            txtWorkAssignDate.Text        = workAssign.WorkAssignDate == null ? "" : workAssign.WorkAssignDate.Value.ToString(Constants.DateFormatDatePicker);
                            ddlBillNo.SelectedValue       = Convert.ToString(workAssign.BillNo);
                            ddlEmployeeName.SelectedValue = Convert.ToString(workAssign.EmployeeID);
                            ddlWorkType.SelectedValue     = Convert.ToString(workAssign.WorkTypeID);

                            decimal?totalCost     = workAssign.TotalCost;
                            decimal?remainingCost = workAssign.RemainingCost;
                            if (totalCost != null && remainingCost != null)
                            {
                                txtAmountPaid.Text = Convert.ToString(totalCost - remainingCost);
                            }
                            var date = workAssign.ModifiedDate == null ? workAssign.CreatedDate : workAssign.ModifiedDate;
                            txtPaidDate.Text           = date.Value.ToString(Constants.DateFormatDatePicker);
                            chkIsWorkCompleted.Checked = workAssign.IsComplete == null ? false : Convert.ToBoolean(workAssign.IsComplete);

                            hdnAssignWorkID.Value = Convert.ToString(workAssign.WorkAssignID);

                            var inventoryUsed = context.WorkAssignInventoryUseds.Where(x => x.IsActive == true && x.WorkAssignID == workAssign.WorkAssignID).AsEnumerable();
                            var collection    = from invUsed in inventoryUsed
                                                join inv in context.InventoryTypes.Where(x => x.IsActive == true).AsEnumerable() on invUsed.InventoryTypeID equals inv.InventoryTypeId
                                                select new rptrClass
                            {
                                ItemID   = Convert.ToString(invUsed.InventoryTypeID),
                                ItemName = inv.InventoryTypeName,
                                Quantity = Convert.ToString(invUsed.InventoryUsedCount),
                                WorkAssignInventoryUsedID = Convert.ToString(invUsed.WorkAssignInventoryUsedID)
                            };

                            rptrData.DataSource = collection.ToList();
                            rptrData.DataBind();
                        }
                        else
                        {
                            lblMessage.Text      = "Work ID Not Found";
                            lblMessage.ForeColor = Color.Red;
                        }
                    }
                    else
                    {
                        lblMessage.Text      = "Work ID Not Valid";
                        lblMessage.ForeColor = Color.Red;
                    }
                }
                else
                {
                    lblMessage.Text      = "Work ID Not in right format";
                    lblMessage.ForeColor = Color.Red;
                }
            }
            catch
            {
                throw;
            }
        }