Пример #1
0
        /// <summary>
        /// This method is used for saving the contract details
        /// </summary>
        /// <param name="contractAdd"></param>
        /// <returns></returns>
        public int Save(BusinessEntities.Contract contractAdd, DataTable projectDetails)
        {
            int contractId = 0;

            try
            {
                Rave.HR.DataAccessLayer.Contracts.Contract saveContractBL = new Rave.HR.DataAccessLayer.Contracts.Contract();

                contractId             = saveContractBL.Save(contractAdd);
                contractAdd.ContractID = contractId;

                if (contractId != 0)
                {
                    SaveProjects(contractAdd, projectDetails);
                }
                return(contractId);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, SAVE, EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #2
0
        /// <summary>
        /// Gets the HTML for contract table data.
        /// </summary>
        /// <param name="contractDetails">The contract details.</param>
        /// <returns></returns>
        private string GetHTMLForContractTableData(BusinessEntities.Contract contractDetails)
        {
            string bodyTable = string.Empty;

            if (contractDetails != null)
            {
                string[] header = new string[5];
                header[0] = "Contract Type";
                header[1] = "Contract Ref. Id";
                header[2] = "Start Date";
                header[3] = "End Date";
                header[4] = "Document Name";

                string[,] arrayData = new string[1, 5];

                int rowCounter = 0;

                arrayData[rowCounter, 0] = contractDetails.ContractTypeName;
                arrayData[rowCounter, 1] = contractDetails.ContractReferenceID;
                arrayData[rowCounter, 2] = contractDetails.ContractStartDate.ToString(CommonConstants.DATE_FORMAT);
                arrayData[rowCounter, 3] = contractDetails.ContractEndDate.ToString(CommonConstants.DATE_FORMAT);
                arrayData[rowCounter, 4] = contractDetails.DocumentName;

                rowCounter++;

                IEmailTableData objEmailTableData = new EmailTableData();
                objEmailTableData.Header    = header;
                objEmailTableData.RowDetail = arrayData;
                objEmailTableData.RowCount  = 1;

                bodyTable += objEmailTableData.GetTableData(objEmailTableData);
            }
            return(bodyTable);
        }
Пример #3
0
        /// <summary>
        /// This method is used for editing the contract details
        /// </summary>
        /// <param name="contractAdd"></param>
        /// <returns></returns>
        public bool Edit(BusinessEntities.Contract contractAdd, DataTable contractProject, RaveHRCollection CRDetailsCollection)
        {
            bool result = false;

            try
            {
                //Defines a bl layer object.
                Rave.HR.DataAccessLayer.Contracts.Contract EditContractDL = new Rave.HR.DataAccessLayer.Contracts.Contract();

                // Calls the data layer function for editing the contract details.
                result = EditContractDL.edit(contractAdd);

                if (result)
                {
                    result = EditProjects(contractAdd, contractProject, CRDetailsCollection);
                }
                return(result);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, EDIT, EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #4
0
        /// <summary>
        /// Send mail after deleting contract.
        /// </summary>
        /// <param name="ContractDetails"></param>
        private void SendMailForDeleteContract(BusinessEntities.Contract ContractDetails)
        {
            try
            {
                IRMSEmail obj = new RMSEmail(Convert.ToInt16(EnumsConstants.RMSModule.Contract),
                                             Convert.ToInt16(EnumsConstants.EmailFunctionality.DeletedContract));

                obj.Subject = string.Format(obj.Subject, ContractDetails.ContractCode,
                                            ContractDetails.ContractReferenceID,
                                            ContractDetails.ContractClientName);
                obj.Body = string.Format(obj.Body, ContractDetails.ContractCode,
                                         ContractDetails.ContractReferenceID,
                                         ContractDetails.ContractClientName,
                                         ContractDetails.ReasonForDeletion,
                                         GetLinkForEmail(ContractDetails.ContractID));
                obj.SendEmail(obj);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, "SendMailForDeleteContract", EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #5
0
        /// <summary>
        /// Send mail for save projects.
        /// </summary>
        /// <param name="contractData">contract details</param>
        /// <param name="listProjectDetails">project deatils</param>
        /// <param name="allProjectsName">all associated projects</param>
        private void SendMailForSaveContract(BusinessEntities.Contract contractData,
                                             List <BusinessEntities.ContractProject> listProjectDetails,
                                             string allProjectsName)
        {
            try
            {
                IRMSEmail obj = new RMSEmail(Convert.ToInt16(EnumsConstants.RMSModule.Contract),
                                             Convert.ToInt16(EnumsConstants.EmailFunctionality.AddedContract));

                obj.CC.Add(contractData.EmailID);

                obj.Subject = string.Format(obj.Subject, contractData.ContractCode,
                                            contractData.ContractReferenceID,
                                            contractData.ContractClientName,
                                            allProjectsName);
                obj.Body = string.Format(obj.Body, contractData.ContractCode,
                                         contractData.ContractClientName,
                                         GetHTMLForContractTableData(contractData),
                                         GetHTMLForTableData(listProjectDetails),
                                         GetLinkForEmail(contractData.ContractID));

                obj.SendEmail(obj);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, "SendMailForSaveContract", EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #6
0
        /// <summary>
        /// This function deletes the contract details.
        /// </summary>
        /// <param name="Contract"></param>
        public bool Delete(BusinessEntities.Contract Contract)
        {
            bool result = false;

            try
            {
                //declares a dL layer object to call the Delete function.
                objContractProj = new Rave.HR.DataAccessLayer.Contracts.Contract();

                //Calls the DL function to delete the Contract deatils.
                result = objContractProj.delete(Contract);

                if (result)
                {
                    SendMailForDeleteContract(Contract);
                }
                return(result);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, DELETE, EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #7
0
        /// <summary>
        /// This function calls the dl layer function
        /// to disassociate a project related to a contract.
        /// </summary>
        /// <param name="project"></param>
        /// <param name="contract"></param>
        public void DisassociateProject(BusinessEntities.ContractProject project, BusinessEntities.Contract contract)
        {
            try
            {
                //declares a dl layer object
                Rave.HR.DataAccessLayer.Contracts.ContractProject ContractProjectDL = new Rave.HR.DataAccessLayer.Contracts.ContractProject();

                //calls the dl layer function.
                ContractProjectDL.DisassociateProject(project, contract);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACTPROJECT, DISSOCIATEPROJECT, EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #8
0
        /// <summary>
        /// This Function is used to View Contract Details.
        /// </summary>
        /// <param name="objViewProject"></param>
        /// <returns></returns>
        public BusinessEntities.Contract GetContractDetails(BusinessEntities.Contract objViewContract, string SortDir, string SortExpression)
        {
            try
            {
                Rave.HR.DataAccessLayer.Contracts.Contract objViewContracDAL = new Rave.HR.DataAccessLayer.Contracts.Contract();

                BusinessEntities.Contract objContract = null;

                objContract = objViewContracDAL.ViewContractDetails(objViewContract);

                return(objContract);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, GETCONTRACTDETAILS, EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #9
0
        /// <summary>
        /// Send mail for save projects.
        /// </summary>
        /// <param name="contractData">contract details</param>
        /// <param name="listProjectDetails">project deatils</param>
        /// <param name="allProjectsName">all associated projects</param>
        private void SendMailForEditContract(BusinessEntities.Contract contractDetails,
                                             List <BusinessEntities.ContractProject> listProjectDetails,
                                             string allProjectsName, RaveHRCollection ContractCRdetails)
        {
            try
            {
                IRMSEmail obj = new RMSEmail(Convert.ToInt16(EnumsConstants.RMSModule.Contract),
                                             Convert.ToInt16(EnumsConstants.EmailFunctionality.EditedContract));

                obj.CC.Add(contractDetails.EmailID);

                obj.Subject = string.Format(obj.Subject, contractDetails.ContractCode,
                                            contractDetails.ContractReferenceID,
                                            contractDetails.ContractClientName,
                                            allProjectsName);
                if (ContractCRdetails.Count == 0)
                {
                    obj.Subject = obj.Subject.Replace(", new Change Request added", string.Empty);
                }

                obj.Body = string.Format(obj.Body, contractDetails.ContractCode,
                                         contractDetails.ContractReferenceID,
                                         contractDetails.ContractClientName,
                                         GetHTMLForCRTableData(ContractCRdetails),
                                         GetHTMLForTableData(listProjectDetails),
                                         GetLinkForEmail(contractDetails.ContractID),
                                         //ambar Issue Id:26114
                                         GetHTMLForContractEditedTableData(contractDetails)
                                         );
                obj.SendEmail(obj);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, "SendMailForSaveContract", EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #10
0
        /// <summary>
        /// Deletes the CR details.
        /// </summary>
        /// <param name="objDeleteQualificationDetails">The obj delete qualification details.</param>
        public void DeleteCRDetails(BusinessEntities.Contract objDeleteCRDetails)
        {
            //Object declaration of QualificationDetails class
            Rave.HR.DataAccessLayer.Contracts.Contract objDeleteCRDetailsDAL;

            try
            {
                //Created new instance of CRDetails class to call DeleteCRDetails() of Data access layer
                objDeleteCRDetailsDAL = new Rave.HR.DataAccessLayer.Contracts.Contract();

                //Call to DeleteQualificationDetails() of Data access layer
                objDeleteCRDetailsDAL.DeleteCRDetails(objDeleteCRDetails);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, "DeleteCRDetails", EventIDConstants.RAVE_HR_EMPLOYEE_BUSNIESS_LAYER);
            }
        }
Пример #11
0
        /// <summary>
        /// Gets the CR details.
        /// </summary>
        /// <param name="objGetQualificationDetails">The obj get qualification details.</param>
        /// <returns></returns>
        public BusinessEntities.RaveHRCollection GetCRDetails(BusinessEntities.Contract objGetCRDetails)
        {
            //Object declaration of CRDetails class
            Rave.HR.DataAccessLayer.Contracts.Contract objGetCRDetailsDAL;

            try
            {
                //Created new instance of CRDetails class to call objGetQualificationDetailsDAL() of Data access layer
                objGetCRDetailsDAL = new Rave.HR.DataAccessLayer.Contracts.Contract();

                //Call to GetCRDetails() of Data access layer and return the CRdetails
                return(objGetCRDetailsDAL.GetCRDetails(objGetCRDetails));
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, "GetCRDetails", EventIDConstants.RAVE_HR_EMPLOYEE_BUSNIESS_LAYER);
            }
        }
Пример #12
0
        /// <summary>
        /// This function disassociates the project from a contract
        /// </summary>
        /// <param name="project"></param>
        /// <param name="contract"></param>
        public void DisassociateProject(BusinessEntities.ContractProject project, BusinessEntities.Contract contract)
        {
            //creates a DataAccessClass object.
            DataAccessClass ProjectDisassociate = new DataAccessClass();

            try
            {
                //creates a new business entity.
                objContractProject = new BusinessEntities.ContractProject();

                //Opens the connection.
                ProjectDisassociate.OpenConnection(DBConstants.GetDBConnectionString());

                //Declares the parameters for the sp.
                SqlParameter[] sqlParam = new SqlParameter[2];
                sqlParam[0]       = new SqlParameter(SPParameter.ContractCode, DbType.String);
                sqlParam[0].Value = contract.ContractCode;
                sqlParam[1]       = new SqlParameter(SPParameter.ProjectName, DbType.String);
                sqlParam[1].Value = project.ProjectName;

                //update changes in the database.
                int disassociateProject = ProjectDisassociate.ExecuteNonQuerySP(SPNames.Contract_DisassociateProject, sqlParam);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.DataAccessLayer, CLASSNAME, "DisassociateProject", EventIDConstants.RAVE_HR_CONTRACT_DATA_ACCESS_LAYER);
            }
            finally
            {
                ProjectDisassociate.CloseConncetion();
            }
        }
Пример #13
0
        public bool checkCRReferenceNo(BusinessEntities.Contract objCRDetails)
        {
            try
            {
                //Object declaration of QualificationDetails class
                Rave.HR.DataAccessLayer.Contracts.Contract objCRDetailsDAL;

                bool Check = false;

                objCRDetailsDAL = new Rave.HR.DataAccessLayer.Contracts.Contract();

                Check = objCRDetailsDAL.checkCRReferenceNo(objCRDetails);

                return(Check);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, "checkCRReferenceNo", EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }
Пример #14
0
        //Added by Ambar : Issue Id 26114
        private string GetHTMLForContractEditedTableData(BusinessEntities.Contract contractDetails)
        {
            string bodyTable = string.Empty;

            if (contractDetails != null)
            {
                bool b_no_changes = false;

                string[] header = new string[16];
                int      i      = 0;
                string[,] arrayData = new string[1, 16];

                if (contractDetails.PreviousAccountManagerName != null)
                {
                    header[i]       = "Prev.AccountMgrName";
                    arrayData[0, i] = contractDetails.PreviousAccountManagerName;
                    i++;
                    header[i]       = "AccountMgrName";
                    arrayData[0, i] = contractDetails.TempAccountManagerName;
                    i++;
                    b_no_changes = true;
                }

                if ((contractDetails.PreviousContractEndDate != null) && (contractDetails.PreviousContractEndDate.ToString() != "01/01/0001 00:00:00"))
                {
                    header[i]       = "Prev.ContractEndDt";
                    arrayData[0, i] = contractDetails.PreviousContractEndDate.ToString();
                    i++;
                    header[i]       = "ContractEndDt";
                    arrayData[0, i] = contractDetails.ContractEndDate.ToString();
                    i++;
                    b_no_changes = true;
                }

                if (contractDetails.PreviousContractReferenceID != null)
                {
                    header[i]       = "Prev.ContractRefId";
                    arrayData[0, i] = contractDetails.PreviousContractReferenceID.ToString();
                    i++;
                    header[i]       = "ContractRefId";
                    arrayData[0, i] = contractDetails.ContractReferenceID.ToString();
                    i++;
                    b_no_changes = true;
                }

                if ((contractDetails.PreviousContractStartDate != null) && (contractDetails.PreviousContractStartDate.ToString() != "01/01/0001 00:00:00"))
                {
                    header[i]       = "Prev.ContractStartDt";
                    arrayData[0, i] = contractDetails.PreviousContractStartDate.ToString();
                    i++;
                    header[i]       = "ContractStartDt";
                    arrayData[0, i] = contractDetails.ContractStartDate.ToString();
                    i++;
                    b_no_changes = true;
                }

                if (contractDetails.PreviousContractType != null)
                {
                    header[i]       = "Prev.ContractType";
                    arrayData[0, i] = contractDetails.PreviousContractType.ToString();
                    i++;
                    header[i]       = "ContractType";
                    arrayData[0, i] = contractDetails.ContractTypeName.ToString();
                    i++;
                    b_no_changes = true;
                }

                if (contractDetails.PreviousCurrencyType != null)
                {
                    header[i] = "Prev.CurrencyType";

                    arrayData[0, i] = contractDetails.PreviousCurrencyType.ToString();
                    i++;
                    header[i]       = "CurrencyType";
                    arrayData[0, i] = contractDetails.TempCurrencyName.ToString();
                    i++;
                    b_no_changes = true;
                }

                if (contractDetails.PreviousDocumentName != null)
                {
                    header[i]       = "PrevDocumentName";
                    arrayData[0, i] = contractDetails.PreviousDocumentName.ToString();
                    i++;
                    header[i]       = "DocumentName";
                    arrayData[0, i] = contractDetails.DocumentName.ToString();
                    i++;
                    b_no_changes = true;
                }

                if (contractDetails.PreviousContractValue != 0)
                //if(contractDetails.flg=true)
                //else
                {
                    header[i]       = "Prev.ContractValue";
                    arrayData[0, i] = String.Format("{0:0.##}", contractDetails.PreviousContractValue);
                    i++;
                    header[i]       = "ContractValue";
                    arrayData[0, i] = contractDetails.ContractValue.ToString();
                    i++;
                    b_no_changes = true;
                }

                if (!b_no_changes)
                {
                    header[i]       = "No Changes has been made to contract";
                    arrayData[0, i] = "No Changes has been made to contract";
                    i++;
                }

                string[] header_new = new string[i];
                string[,] arrayData_new = new string[1, i];

                for (int j = 0; j < i; j++)
                {
                    header_new[j] = header[j];
                }

                if (!b_no_changes)
                {
                    i--;
                }

                for (int k = 0; k < i; k++)
                {
                    arrayData_new[0, k] = arrayData[0, k];
                }

                IEmailTableData objEmailTableData = new EmailTableData();
                objEmailTableData.Header    = header_new;
                objEmailTableData.RowDetail = arrayData_new;
                objEmailTableData.RowCount  = 1;

                bodyTable += objEmailTableData.GetTableData(objEmailTableData);
            }

            return(bodyTable);
        }
Пример #15
0
        /// <summary>
        /// Edit project Details.
        /// </summary>
        /// <param name="contractDetails"></param>
        /// <param name="contractProject"></param>
        /// <returns></returns>
        private bool EditProjects(BusinessEntities.Contract contractDetails,
                                  DataTable contractProject, RaveHRCollection CRDetailsCollection)
        {
            int  counter = 0;
            bool sucess  = true;

            Rave.HR.BusinessLayer.Contracts.ContractProject editContractProject = new Rave.HR.BusinessLayer.Contracts.ContractProject();
            List <BusinessEntities.ContractProject>         listProjectData     = new List <BusinessEntities.ContractProject>();
            StringBuilder    allProjectsName          = new StringBuilder(string.Empty);
            RaveHRCollection AddedCRDetailsCollection = new RaveHRCollection();

            foreach (DataRow dr in contractProject.Rows)
            {
                counter++;

                BusinessEntities.ContractProject ProjectData = new BusinessEntities.ContractProject();

                ProjectData.ContractID          = contractDetails.ContractID;
                ProjectData.ProjectType         = dr[DbTableColumn.ProjectType].ToString();
                ProjectData.ProjectStartDate    = Convert.ToDateTime(dr[DbTableColumn.ProjectStartDate]);
                ProjectData.ProjectEndDate      = Convert.ToDateTime(dr[DbTableColumn.ProjectEndDate]);
                ProjectData.ProjectName         = dr[DbTableColumn.Con_ProjectName].ToString();
                ProjectData.NoOfResources       = Convert.ToDecimal(dr[DbTableColumn.NoOfResources]);
                ProjectData.ProjectsDescription = dr[DbTableColumn.Description].ToString();
                ProjectData.ProjectCategoryID   = Convert.ToInt32(dr[DbTableColumn.Con_ProjectCategoryID]);
                // Mohamed : Issue 49791 : 15/09/2014 : Starts
                // Desc : Add project group in Contract page
                ProjectData.ProjectGroup = dr[DbTableColumn.ProjectGroup].ToString();
                // Mohamed : Issue 49791 : 15/09/2014 : Ends

                // Mohamed : Issue  : 23/09/2014 : Starts
                // Desc : Add Division, Business Area, Business Segment, Project Alias in Contract page -- NIS-RMS
                ProjectData.ProjectDivision         = Convert.ToInt32(dr[DbTableColumn.ProjectDivision].ToString());
                ProjectData.ProjectBussinessArea    = Convert.ToInt32(dr[DbTableColumn.ProjectBusinessArea].ToString());
                ProjectData.ProjectBussinessSegment = Convert.ToInt32(dr[DbTableColumn.ProjectBusinessSegment].ToString());
                //ProjectData.ProjectAlias = dr[DbTableColumn.ProjectAlias].ToString();
                // Mohamed : Issue  : 23/09/2014 : Ends

                //Siddharth 13 March 2015 Start

                //Note the below line is commented bcoz in session First time Project model is not stored
                //ProjectData.ProjectModel = dr[DbTableColumn.ProjectModel].ToString();
                ProjectData.ProjectModel = dr[DbTableColumn.ProjectModel].ToString();
                //Siddharth 13 March 2015 End

                //Siddharth 9 Sept 2015 Start
                ProjectData.BusinessVertical = dr[DbTableColumn.BusinessVertical].ToString();
                //Siddharth 9 Sept 2015 End


                //Added by Shrinivas for implementing new project code
                if (!string.IsNullOrEmpty(dr[DbTableColumn.ProjectCode].ToString()))
                {
                    ProjectData.ProjectCode = dr[DbTableColumn.ProjectCode].ToString();
                }
                else
                {
                    ProjectData.ProjectCode = contractDetails.ClinetAbbrivation + "_" + contractDetails.ProjectAbbrivation + "_" + contractDetails.Phase;
                }

                //Edit only those have project code.
                if (dr[DbTableColumn.ProjectCode].ToString() != string.Empty)
                {
                    sucess = editContractProject.Edit(ProjectData, null);
                }
                listProjectData.Add(ProjectData);

                if (counter == 1)
                {
                    allProjectsName.Append(",Project:");
                }
                //append all projects name to dispaly in Email.
                allProjectsName.Append(",");
                allProjectsName.Append(ProjectData.ProjectName);
            }

            foreach (BusinessEntities.Contract CRdetails in CRDetailsCollection)
            {
                if (CRdetails.Mode == "1")
                {
                    AddedCRDetailsCollection.Add(CRdetails);
                }
            }

            if (sucess)
            {
                SendMailForEditContract(contractDetails, listProjectData, allProjectsName.ToString(), AddedCRDetailsCollection);
            }
            return(sucess);
        }
Пример #16
0
        /// <summary>
        /// Save project Details.
        /// </summary>
        /// <param name="contractAdd"></param>
        /// <param name="projectDetails"></param>
        /// <returns></returns>
        private bool SaveProjects(BusinessEntities.Contract contractAdd,
                                  DataTable projectDetails)
        {
            int           counter = 0;
            bool          sucess  = true;
            string        ProjectCodeAbbreviation = string.Empty;
            StringBuilder allProjectsName         = new StringBuilder(string.Empty);

            try
            {
                List <BusinessEntities.ContractProject> listProjectData = new List <BusinessEntities.ContractProject>();

                contractAdd.ContractCode = "C" + contractAdd.ContractID.ToString();

                if (projectDetails != null)
                {
                    Rave.HR.BusinessLayer.Contracts.ContractProject ContractProjectBL = new Rave.HR.BusinessLayer.Contracts.ContractProject();

                    foreach (DataRow dr in projectDetails.Rows)
                    {
                        counter++;
                        BusinessEntities.ContractProject ProjectData = new BusinessEntities.ContractProject();

                        ProjectData.ClientName = contractAdd.ClientName;
                        ProjectData.ContractID = contractAdd.ContractID;

                        ProjectData.ProjectName   = dr[DbTableColumn.Con_ProjectName].ToString();
                        ProjectData.ProjectType   = dr[DbTableColumn.ProjectType].ToString();
                        ProjectData.ProjectTypeID = Convert.ToInt32(dr[DbTableColumn.ProjectTypeID]);

                        ProjectData.ProjectLocationName = dr[DbTableColumn.ProjectLocation].ToString();
                        ProjectData.ProjectStartDate    = Convert.ToDateTime(dr[DbTableColumn.ProjectStartDate]);
                        ProjectData.ProjectEndDate      = Convert.ToDateTime(dr[DbTableColumn.ProjectEndDate]);

                        ProjectData.CreatedByEmailId = contractAdd.CreatedByEmailId;
                        ProjectData.NoOfResources    = Convert.ToDecimal(dr[DbTableColumn.NoOfResources]);
                        ProjectData.ProjectCode      = contractAdd.ClinetAbbrivation + "_" + contractAdd.ProjectAbbrivation + "_" + contractAdd.Phase;

                        //Rakesh : HOD for Employees 11/07/2016 Begin
                        ProjectData.ProjectHeadId = Convert.ToInt32(dr[DbTableColumn.ProjectHeadId]);
                        //Rakesh : HOD for Employees 11/07/2016 End



                        if (dr[DbTableColumn.Description].ToString() != string.Empty)
                        {
                            ProjectData.ProjectsDescription = dr[DbTableColumn.Description].ToString();
                        }
                        else
                        {
                            ProjectData.ProjectsDescription = string.Empty;
                        }
                        ProjectData.ProjectCategoryID       = Convert.ToInt32(dr[DbTableColumn.Con_ProjectCategoryID]);
                        ProjectData.ProjectCodeAbbreviation = contractAdd.ClinetAbbrivation + "_" + contractAdd.ProjectAbbrivation + "_" + contractAdd.Phase;

                        // Mohamed : Issue  : 26/09/2014 : Starts
                        // Desc : Add Division, Business Area, Business Segment, Project Alias in Contract page -- NIS-RMS
                        ProjectData.ProjectGroup            = dr[DbTableColumn.Con_ProjectGroup].ToString();
                        ProjectData.ProjectDivision         = Convert.ToInt32(dr[DbTableColumn.Con_ProjectDivision].ToString());
                        ProjectData.ProjectBussinessArea    = Convert.ToInt32(dr[DbTableColumn.Con_ProjectBusinessArea].ToString());
                        ProjectData.ProjectBussinessSegment = Convert.ToInt32(dr[DbTableColumn.Con_ProjectBusinessSegment].ToString());
                        //ProjectData.ProjectAlias = dr[DbTableColumn.Con_ProjectAlias].ToString();
                        // Mohamed : Issue  : 26/09/2014 : Ends

                        //Siddharth 9 Sept 2015 Start
                        ProjectData.BusinessVertical = dr[DbTableColumn.BusinessVertical].ToString();
                        ProjectData.ProjectModel     = dr[DbTableColumn.ProjectModel].ToString();
                        //Siddharth 9 Sept 2015 End


                        sucess = ContractProjectBL.Save(ProjectData, ref ProjectCodeAbbreviation);

                        if (sucess == true)
                        {
                            ProjectData.ProjectCodeAbbreviation = ProjectCodeAbbreviation;
                        }
                        listProjectData.Add(ProjectData);

                        if (counter == 1)
                        {
                            allProjectsName.Append(",Project:");
                        }
                        //append all projects name to dispaly in Email.
                        allProjectsName.Append(",");
                        allProjectsName.Append(ProjectData.ProjectName);
                    }
                }
                if (sucess == true)
                {
                    SendMailForSaveContract(contractAdd, listProjectData, allProjectsName.ToString());
                }
                return(sucess);
            }
            catch (RaveHRException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new RaveHRException(ex.Message, ex, Sources.BusinessLayer, CONTRACT, "SaveProjects", EventIDConstants.RAVE_HR_CONTRACT_BUSNIESS_LAYER);
            }
        }