/// <summary>
        /// Edit ContractLine by id
        /// </summary>
        /// <param name="id">ContractLine Id</param>
        /// <returns>ContractLine details view</returns>
        public ActionResult ContractLineEdit(int id)
        {
            MODEL.ContractLine contractLine = new MODEL.ContractLine();;

            try
            {
                ContractLineService contractLineService = new ContractLineService();

                //Get contractLine details
                ContractLineVO contractLineVO = contractLineService.GetContractLineById(id);

                if (contractLineVO == null)
                {
                    ModelState.AddModelError("", String.Format(Constants.ITEM_NOT_FOUND, Constants.CONTRACT_LINE));
                }
                else
                {
                    contractLine = new MODEL.ContractLine(contractLineVO);
                    contractLine.CostCentreList       = GetCostCenterList(contractLineVO.Contract.CompanyID);
                    contractLine.ActivityCategoryList = GetActivityCategoryList();
                    contractLine.JobCodeList          = GetJobCodeList(contractLineVO.Contract.CompanyID, contractLineVO.Contract.InvoiceCustomerID);
                    contractLine.IsJobCodeExist       = IsJobCodeExist(contractLine.JobCodeList, contractLine.JobCodeId);
                    contractLine.ActivityCodeList     = GetActivityCodeList(contractLineVO.Contract.CompanyID);
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", e.Message);
            }
            return(PartialView("ContractLineDetails", contractLine));
        }
        /// <summary>
        /// Get the list of Contract Lines based on Contract Id
        /// </summary>
        /// <param name="param"></param>
        /// <param name="contractId">Contract Id</param>
        /// <returns>ContractLine List</returns>
        public ActionResult GetContractLineByContractId(MODEL.jQueryDataTableParamModel param, int?contractId)
        {
            try
            {
                ContractLineService   contractLineService = new ContractLineService();
                List <ContractLineVO> contractLineVOList  = contractLineService.GetContractLineByContractId(contractId.Value);

                List <MODEL.ContractLine> contractLines = new List <MODEL.ContractLine>();
                foreach (var item in contractLineVOList)
                {
                    contractLines.Add(new MODEL.ContractLine(item));
                }

                ////get the field on with sorting needs to happen and set the
                ////ordering function/delegate accordingly.
                int sortColumnIndex  = Convert.ToInt32(Request["iSortCol_0"]);
                var orderingFunction = GetContractListOrderingFunction(sortColumnIndex);
                var result           = GetFilteredObjects(param, contractLines, orderingFunction);

                return(result);
            }
            catch (Exception e)
            {
                return(new HttpStatusCodeAndErrorResult(500, e.Message));
            }
        }
        /// <summary>
        /// Save the Contract Line
        /// </summary>
        /// <param name="model">model object of Contract Line</param>
        /// <returns></returns>
        public ActionResult ContractLineSave(MODEL.ContractLine model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //Get user id
                    int?userId = Session.GetUserId();
                    ContractLineService contractLineService = new ContractLineService();
                    //ContractLineVO contractLineVO = new ContractLineVO(model, userId);

                    ContractLineVO contractLineVO = model.Transpose(userId);

                    contractLineService.ContractLineSave(contractLineVO);
                    return(new HttpStatusCodeResult(200));
                }
                else
                {
                    throw new ApplicationException(String.Format(Constants.CANNOT_SAVE, Constants.CONTRACT_LINE));
                }
            }
            catch (ApplicationException e)
            {
                return(new HttpStatusCodeAndErrorResult(500, e.Message));
            }
        }
 /// <summary>
 /// Delete contractLines
 /// </summary>
 /// <param name="Ids">Ids of contactLine to be deleted</param>
 public ActionResult ContractLineDelete(List <int> Ids)
 {
     try
     {
         //Get user id
         int?userId = Session.GetUserId();
         ContractLineService contractLineService = new ContractLineService();
         contractLineService.ContractLineDelete(Ids, userId);
         return(new HttpStatusCodeResult(200));
     }
     catch (Exception e)
     {
         return(new HttpStatusCodeAndErrorResult(500, e.Message));
     }
 }