/// <summary>
        /// Update Requisition detail data to Requisition detail Table according to the Requisition Parameter
        ///  Return Constants.DB_STATUS
        /// </summary>
        /// <param name="requisitionDetail"></param>
        /// <returns></returns>
        public Constants.DB_STATUS Update(RequisitionDetail requisitionDetail)
        {
            Constants.DB_STATUS status = Constants.DB_STATUS.UNKNOWN;

            try
            {
                requisitionDetailObj = inventory.RequisitionDetails.Where(reqObj => reqObj.Id == requisitionDetail.Id).First();
                Item itemId = inventory.Items.Where(i => i.Id == requisitionDetail.Item.Id).First();
                Requisition requisitionId = inventory.Requisitions.Where(r => r.Id == requisitionDetail.Requisition.Id).First();
                requisitionDetailObj.Id = requisitionDetail.Id;
                requisitionDetailObj.Requisition = requisitionId;
                requisitionDetailObj.Qty = requisitionDetail.Qty;
                requisitionDetailObj.DeliveredQty = requisitionDetail.DeliveredQty;
                requisitionDetailObj.Item = itemId;
                inventory.SaveChanges();
                status = Constants.DB_STATUS.SUCCESSFULL;
            }
            catch (Exception e)
            {
                status = Constants.DB_STATUS.FAILED;
            }

            return status;
        }
 /// <summary>
 /// There is no status in RetrievalTable.
 /// </summary>
 /// <param name="requisitionDetail"></param>
 /// <returns></returns>
 public Constants.DB_STATUS Delete(RequisitionDetail requisitionDetail)
 {
     throw new NotImplementedException();
 }
 /// <summary>
 ///  Retrieve the RequisitionDetail information according to the Requisition detail Parameter 
 /// </summary>
 /// <param name="requisitionDetail"></param>
 /// <returns></returns>
 public RequisitionDetail GetRequisitionDetail(RequisitionDetail requisitionDetail)
 {
     try
     {
         requisitionDetailObj = inventory.RequisitionDetails.Where(reqObj => reqObj.Id == requisitionDetail.Id || reqObj.Requisition.Id == requisitionDetail.Requisition.Id
             ).First();
     }
     catch (Exception e)
     {
         requisitionDetailObj = null;
     }
     return requisitionDetailObj;
 }
        /// <summary>
        /// Insert Requisition dtail data to the Requisition detail Table according to the Requisition Parameter
        ///  Return Constants.DB_STATUS
        /// </summary>
        /// <param name="requisitionDetail"></param>
        /// <returns></returns>
        public Constants.DB_STATUS Insert(RequisitionDetail requisitionDetail)
        {
            Constants.DB_STATUS status = Constants.DB_STATUS.UNKNOWN;

            try
            {
                inventory.AddToRequisitionDetails(requisitionDetail);
                inventory.SaveChanges();
                status = Constants.DB_STATUS.SUCCESSFULL;
            }
            catch (Exception e)
            {
                status = Constants.DB_STATUS.FAILED;
            }

            return status;
        }
 /// <summary>
 /// Deprecated Method for adding a new object to the RequisitionDetails EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToRequisitionDetails(RequisitionDetail requisitionDetail)
 {
     base.AddObject("RequisitionDetails", requisitionDetail);
 }
 /// <summary>
 ///  Retrieve the list of RequisitionDetail information according to the Requisition detail Parameter 
 /// </summary>
 /// <param name="requisitionDetail"></param>
 /// <returns>
 /// List of Requisition Detail
 /// </returns>
 public List<RequisitionDetail> GetAllRequisitionDetailByObj(RequisitionDetail requisitionDetail)
 {
     try
     {
         requisitionDetailList = inventory.RequisitionDetails.Where(reqObj => reqObj.Requisition.Id == requisitionDetail.Requisition.Id).ToList<RequisitionDetail>();
     }
     catch (Exception e)
     {
         requisitionDetailList = null;
     }
     return requisitionDetailList;
 }
        static void Main()
        {
            // Write the Main Program for RequistionBrokerTest here...

            RequisitionBroker reqBroker = new RequisitionBroker();
               Requisition req = new Requisition();
            RequisitionDetail reqDetail=new RequisitionDetail();
            Department dept = new Department();
            Item item = new Item();
            Employee emp = new Employee();
            dept.Id = "COMM";
            emp.Id = 1;
            emp.Department = dept;
            emp.Role = new Role();
            emp.Role.Id = 1;
            emp.User = new User();
            emp.User.Employee = emp;
            emp.User1 = new User();
            emp.User1.Employee = emp;

            req.Department = dept;

              //  req.Employee = emp;

            //req.Employee.Id=1;
            req.Remarks="Insert Test";
            //req.ApprovedDate=new DateTime(23-01-2012);
            //req.CreatedDate=new DateTime(23-01-2012);
            req.Status=1;
            req.Employee = emp;
            req.Employee1 = emp;

               // reqDetail.Requisition.Id
               // reqDetail.Item.Id="1";
            item.Id = "1";
             reqDetail.Item=item;
            reqDetail.Qty=10;
            reqDetail.DeliveredQty=20;
            req.RequisitionDetails.Add(reqDetail);
            reqDetail.Item.Employee = reqDetail.Requisition.Employee;

            if (reqBroker.Insert(req).Equals("FAILED"))
            {
                Console.WriteLine("Successful");
            }
            else
            {
                Console.WriteLine("Error");
            }
            /*  req.Id = "1";

               if (reqBroker.GetRequisition(req) != null)
               {
               Console.WriteLine(reqBroker.GetRequisition(req).Remarks);
               foreach(RequisitionDetail reqDetial in reqBroker.GetRequisition(req).RequisitionDetails)
               Console.WriteLine(reqDetial.DeliveredQty);
               }

               if (reqBroker.GetAllRequisition().Count > 0)
               {
               Console.WriteLine("Retrieve all requisitions");
               foreach (Requisition r in reqBroker.GetAllRequisition())
               {
                   Console.WriteLine(r.Id + " " + r.Remarks);
                   foreach (RequisitionDetail rd in r.RequisitionDetails)
                   {
                       Console.WriteLine(rd.Id + " " + rd.Item.Description);
                   }
               }
               }
               else
               {
               Console.WriteLine("Cannot read all requisitions");
               }

               Console.WriteLine(SystemStoreInventorySystemUtil.Converter.objToInt(SystemStoreInventorySystemUtil.Constants.VISIBILITY_STATUS.SHOW));
               Console.WriteLine(SystemStoreInventorySystemUtil.Constants.VISIBILITY_STATUS.SHOW);
            */

            #region /* Do not remove this or write codes after this  */
            ISSConsole.Pause();
            #endregion
        }
 /// <summary>
 /// Create a new RequisitionDetail object.
 /// </summary>
 /// <param name="id">Initial value of the Id property.</param>
 /// <param name="qty">Initial value of the Qty property.</param>
 public static RequisitionDetail CreateRequisitionDetail(global::System.Int32 id, global::System.Int32 qty)
 {
     RequisitionDetail requisitionDetail = new RequisitionDetail();
     requisitionDetail.Id = id;
     requisitionDetail.Qty = qty;
     return requisitionDetail;
 }
 public void SelectRequisition(Requisition requisition)
 {
     RequisitionDetail requisitionDetail = new RequisitionDetail();
     requisitionDetail.Requisition = requisition;
     RequisitionDetail resultRequisitionDetail = requisitionBroker.GetRequisitionDetail(requisitionDetail);
     // show on UI
 }
 /// <summary>
 ///     Show one requisition according to requisitionId parameter
 ///     Created By:JinChengCheng
 ///     Created Date:26-01-2012
 ///     Modified By:
 ///     Modified Date:
 ///     Modification Reason:
 ///     Modified By:
 ///     Modified Date:
 ///     Modification Reason:
 /// </summary>
 /// <param name="requisitionId"></param>
 /// <returns>The return type of this method is datatable.</returns>
 public DataTable getRequisition(string requisitionId)
 {
     //requisition = new Requisition();
     //requisition.Id = requisitionId;
     //requisition = RequisitionList.Find(delegate(Requisition req) { return requisitionId == req.Id; });
     requisitionDetail = new RequisitionDetail(0, new Requisition(), new Item(), 0, 0);
     requisitionDetail.Requisition.Id = requisitionId;
     requisitionDetail = requisitionBroker.GetRequisitionDetail(requisitionDetail);
     dt = new DataTable();
     dt.Columns.Add("requisitionId");
     dt.Columns.Add("requisitionDate/Time");
     dt.Columns.Add("status");
     dt.Columns.Add("remainingQty");
     dt.Columns.Add("remarks");
     dt.Columns.Add("deptCode");
     dt.Columns.Add("deptName");
     dt.Columns.Add("empName");
     dt.Columns.Add("empNumber");
     dt.Columns.Add("empEmail");
     dr = dt.NewRow();
     dr["requisitionId"] = requisition.Id;
     dr["requisitionDate/Time"] = requisition.CreatedDate;
     dr["status"] = requisition.Status;
     dr["remainingQty"] = requisitionDetail.Qty - requisitionDetail.DeliveredQty;
     dr["remarks"] = requisition.Remarks;
     dr["deptCode"] = requisition.Department.Id;
     dr["deptName"] = requisition.Department.Name;
     dr["empName"] = requisition.CreatedBy.Name;
     dr["empNumber"] = requisition.CreatedBy.Id;
     dr["empEmail"] = requisition.CreatedBy.Email;
     dt.Rows.Add(dr);
     return dt;
 }
        //public List<Requisition> GetRequisitionList()
        //{
        //    return requisitionList;
        //}
        /// <summary>
        ///     Show all requisition.
        ///     Created By:JinChengCheng
        ///     Created Date:26-01-2012
        ///     Modified By:Thazin Win
        ///     Modified Date:02-02-2012
        ///     Modification Reason:Get requisition list by requistion
        ///     Modified By:
        ///     Modified Date:
        ///     Modification Reason:
        /// </summary>
        /// <param name=""></param>
        /// <returns>The return type of this method is datatable.</returns>
        public DataTable GetRequisitionList()
        {
            dt = new DataTable();
            dt.Columns.Add("requisitionID");
            dt.Columns.Add("requisitionDate");
            dt.Columns.Add("status");
            dt.Columns.Add("remainingQty");
            dt.Columns.Add("remarks");
            List<Requisition> requisitionList = requisitionBroker.GetAllRequisitionByEmployee(Util.GetEmployee().Id);// GetAllRequisitionByStatus();
            foreach (Requisition temp in requisitionList)
            {
                requisitionDetail = new RequisitionDetail();
                // requisitionDetail.Requisition.Id = temp.Id;
                requisitionDetail.Requisition = temp;
                //Requisition resultRequisition = requisitionBroker.GetRequisition(temp);
                RequisitionDetail resultRequisitionDetail = requisitionBroker.GetRequisitionDetail(requisitionDetail);

                dr = dt.NewRow();
                dr["requisitionID"] = temp.Id;
                dr["requisitionDate"] = temp.CreatedDate;
                //dr["status"] = Converter.GetRequisitionStatusText(Converter.objToRequisitionStatus(temp.Status));
                dr["status"] = temp.Status;

                dr["status"] = Enum.GetName(typeof(Constants.REQUISITION_STATUS), temp.Status);

                dr["remainingQty"] = resultRequisitionDetail.Qty - requisitionDetail.DeliveredQty;
                dr["remarks"] = temp.Remarks;
                dt.Rows.Add(dr);
                //dr["requsitionId"] = temp.Id;
                //dr["requisitionDate"] = temp.CreatedDate;
                //dr["status"] = temp.Status;
                //dr["remainingQty"] = resultRequisitionDetail.Qty-requisitionDetail.DeliveredQty;
                //dr["remarks"] = temp.Remarks;

            }
            return dt;
        }
        //public Requisition EnterRequisitionID(string requisitionId)
        //{
        //    requisition = new Requisition();
        //    requisition.Id = requisitionId;
        //    requisitionBroker.GetRequisition(requisition);
        //    return requisition;
        //}
        /// <summary>
        ///     Show one requisition according to requisitionId parameter
        ///     Created By:JinChengCheng
        ///     Created Date:26-01-2012
        ///     Modified By:
        ///     Modified Date:
        ///     Modification Reason:
        ///     Modified By:
        ///     Modified Date:
        ///     Modification Reason:
        /// </summary>
        /// <param name="requisitionId"></param>
        /// <returns>The return type of this method is datatable.</returns>
        public DataTable EnterRequisitionID(string requisitionId)
        {
            requisition = new Requisition();
            requisition.Id = requisitionId;
            requisition = requisitionBroker.GetRequisition(requisition);
            requisitionDetail = new RequisitionDetail();
            requisitionDetail.Requisition.Id = requisitionId;
            requisitionDetail = requisitionBroker.GetRequisitionDetail(requisitionDetail);
            dt = new DataTable();

            dr = dt.NewRow();
            dr["requisitionId"] = requisition.Id;
            dr["requisitionDate/Time"] = requisition.CreatedDate;
            dr["status"] = requisition.Status;
            dr["remainingQty"] = requisitionDetail.Qty - requisitionDetail.DeliveredQty;
            dr["remarks"] = requisition.Remarks;
            dt.Rows.Add(dr);
            return dt;
        }
        public Constants.ACTION_STATUS AddToTable(string itemId)
        {
            Constants.ACTION_STATUS status = Constants.ACTION_STATUS.UNKNOWN;

            RequisitionDetail requisitionDetail;

            Item item = new Item();
            item.Id = itemId;
            item = itemBroker.GetItem(item);

            if (item != null)
            {
                if (requisition.RequisitionDetails.Where(x=> x.Item.Id == itemId).Count() == 0)
                {
                    requisitionDetail = new RequisitionDetail();
                    requisitionDetail.Id = requisitionBroker.GetRequisitionDetailId() + (itemAdded++);
                    requisitionDetail.Requisition = requisition;
                    requisitionDetail.Item = item;
                    requisitionDetail.Qty = 1;

                    requisition.RequisitionDetails.Add(requisitionDetail);
                    status = Constants.ACTION_STATUS.SUCCESS;
                }
                else
                {
                    status = Constants.ACTION_STATUS.FAIL;
                }
            }
            else
            {
                status = Constants.ACTION_STATUS.FAIL;
            }

            return status;
        }