private void UpdateDatabase()
        {
            // Get ids
            int projectId = int.Parse(hdfCurrentProjectId.Value);
            int refId = int.Parse(hdfCurrentRefId.Value);
            int companyId = int.Parse(hdfCompanyId.Value);

            // Delete
            DB.Open();
            DB.BeginTransaction();
            try
            {
                ProjectRevenue projectRevenue = new ProjectRevenue();
                projectRevenue.DeleteDirect(projectId, refId, companyId);

                DB.CommitTransaction();
            }
            catch (Exception ex)
            {
                DB.RollbackTransaction();

                string url = string.Format("./../../error_page.aspx?error={0}", ex.Message.Replace('\n', ' '));
                Response.Redirect(url);
            }
        }
        /// <summary>
        /// Save
        /// </summary>
        /// <param name="companyId">companyId</param>
        public void Save(int companyId)
        {
            RevenueInformationTDS revenueInformationChanges = (RevenueInformationTDS)Data.GetChanges();

            if (revenueInformationChanges.BasicInformation.Rows.Count > 0)
            {
                RevenueInformationBasicInformationGateway revenueBasicInformationGateway = new RevenueInformationBasicInformationGateway(revenueInformationChanges);

                // Update revneue
                foreach (RevenueInformationTDS.BasicInformationRow row in (RevenueInformationTDS.BasicInformationDataTable)revenueInformationChanges.BasicInformation)
                {
                    // Insert new revenue
                    if ((!row.Deleted) && (!row.InDatabase))
                    {
                        string comment = ""; if (!row.IsCommentNull()) comment = row.Comment;

                        ProjectRevenue projectRevenue = new ProjectRevenue(null);
                        projectRevenue.InsertDirect(row.ProjectID, row.RefID, row.Date, row.Revenue, comment, row.Deleted, row.COMPANY_ID);
                    }

                    // Update revenue
                    if ((!row.Deleted) && (row.InDatabase))
                    {
                        int projectId = row.ProjectID;
                        int refId = row.RefID;
                        bool originalDeleted = false;
                        int originalCompanyId = companyId;

                        // Original values
                        DateTime originalDate = revenueBasicInformationGateway.GetDateOriginal(projectId, refId);
                        decimal originalRevenue = revenueBasicInformationGateway.GetRevenueOriginal(projectId, refId);
                        string originalComment = revenueBasicInformationGateway.GetCommentOriginal(projectId, refId);

                        // New values
                        DateTime newDate = revenueBasicInformationGateway.GetDate(projectId, refId);
                        decimal newRevenue = revenueBasicInformationGateway.GetRevenue(projectId, refId);
                        string newComment = revenueBasicInformationGateway.GetComment(projectId, refId);

                        ProjectRevenue projectRevenue = new ProjectRevenue(null);
                        projectRevenue.UpdateDirect(projectId, refId, originalDate, originalRevenue, originalComment, originalDeleted, originalCompanyId, projectId, refId, newDate, newRevenue, newComment, originalDeleted, originalCompanyId);
                    }

                    // Delete revenue
                    if ((row.Deleted) && (row.InDatabase))
                    {
                        ProjectRevenue projectRevenue = new ProjectRevenue(null);
                        projectRevenue.DeleteDirect(row.ProjectID, row.RefID, row.COMPANY_ID);
                    }
                }
            }
        }
        // ////////////////////////////////////////////////////////////////////////
        // PRIVATE METHODS
        //
        /// <summary>
        /// Save all revenues to database (direct)
        /// </summary>
        /// <param name="companyId">companyId</param>        
        public void Save(int companyId)
        {
            RevenueAddTDS revenueChanges = (RevenueAddTDS)Data.GetChanges();

            if (revenueChanges.ProjectRevenue.Rows.Count > 0)
            {
                RevenueAddProjectRevenueGateway revenuesAddProjectRevenueGateway = new RevenueAddProjectRevenueGateway(revenueChanges);

                foreach (RevenueAddTDS.ProjectRevenueRow row in (RevenueAddTDS.ProjectRevenueDataTable)revenueChanges.ProjectRevenue)
                {
                    //Insert revenues
                    ProjectRevenue projectRevenue = new ProjectRevenue(null);
                    projectRevenue.InsertDirect(row.ProjectID, row.RefID, row.Date, row.Revenue, row.Comment, row.Deleted, row.COMPANY_ID);
                }
            }
        }