Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="HeadCount"></param>
        /// <returns></returns>
        public int UpdateHeadCount(List <HeadCountDTO> target, int typeID, int year, int projectID)
        {
            var source = GetHeadCountByType(typeID, year, projectID);

            EmployeeRoleRepository employeeRepository = new EmployeeRoleRepository(BaseRepository.SystemUserID);
            CountryRepository      countryRepository  = new CountryRepository(BaseRepository.SystemUserID);

            // find and insert new items.
            var newItems = target.Except(source, new HeadCountDTOComparer());

            foreach (HeadCountDTO headCountDTO in newItems)
            {
                HeadCount HeadCount = new HeadCount();

                HeadCount.ProjectID          = projectID;
                HeadCount.EmployeeRoleTypeID = typeID;
                HeadCount.Year = year;

                HeadCount.EmployeeRoleID = employeeRepository.GetEmployeeRole(headCountDTO.EmployeeRole).ID;
                HeadCount.CountryID      = countryRepository.GetCountry(headCountDTO.Country).ID;

                HeadCount.Incremental = DataUtility.GetBooleanString(headCountDTO.Incremental);

                HeadCount.Comment = headCountDTO.Comment;
                HeadCount.Month01 = DataUtility.GetDecimalValue(headCountDTO.Month01);
                HeadCount.Month02 = DataUtility.GetDecimalValue(headCountDTO.Month02);
                HeadCount.Month03 = DataUtility.GetDecimalValue(headCountDTO.Month03);
                HeadCount.Month04 = DataUtility.GetDecimalValue(headCountDTO.Month04);
                HeadCount.Month05 = DataUtility.GetDecimalValue(headCountDTO.Month05);
                HeadCount.Month06 = DataUtility.GetDecimalValue(headCountDTO.Month06);
                HeadCount.Month07 = DataUtility.GetDecimalValue(headCountDTO.Month07);
                HeadCount.Month08 = DataUtility.GetDecimalValue(headCountDTO.Month08);
                HeadCount.Month09 = DataUtility.GetDecimalValue(headCountDTO.Month09);
                HeadCount.Month10 = DataUtility.GetDecimalValue(headCountDTO.Month10);
                HeadCount.Month11 = DataUtility.GetDecimalValue(headCountDTO.Month11);
                HeadCount.Month12 = DataUtility.GetDecimalValue(headCountDTO.Month12);

                CreateHeadCount(HeadCount);
            }


            // find and insert new items.
            var updateItems = target.Union(source, new HeadCountDTOComparer());

            foreach (HeadCountDTO headCountDTO in updateItems)
            {
                int employeeRoleID = employeeRepository.GetEmployeeRole(headCountDTO.EmployeeRole).ID;

                HeadCount HeadCount = GetHeadCount(typeID, year, projectID, employeeRoleID);

                HeadCount.EmployeeRoleTypeID = typeID;
                HeadCount.Year      = year;
                HeadCount.ProjectID = projectID;

                HeadCount.EmployeeRoleID = employeeRoleID;
                HeadCount.CountryID      = countryRepository.GetCountry(headCountDTO.Country).ID;

                HeadCount.Incremental = DataUtility.GetBooleanString(headCountDTO.Incremental);

                HeadCount.Comment = headCountDTO.Comment;
                HeadCount.Month01 = DataUtility.GetDecimalValue(headCountDTO.Month01);
                HeadCount.Month02 = DataUtility.GetDecimalValue(headCountDTO.Month02);
                HeadCount.Month03 = DataUtility.GetDecimalValue(headCountDTO.Month03);
                HeadCount.Month04 = DataUtility.GetDecimalValue(headCountDTO.Month04);
                HeadCount.Month05 = DataUtility.GetDecimalValue(headCountDTO.Month05);
                HeadCount.Month06 = DataUtility.GetDecimalValue(headCountDTO.Month06);
                HeadCount.Month07 = DataUtility.GetDecimalValue(headCountDTO.Month07);
                HeadCount.Month08 = DataUtility.GetDecimalValue(headCountDTO.Month08);
                HeadCount.Month09 = DataUtility.GetDecimalValue(headCountDTO.Month09);
                HeadCount.Month10 = DataUtility.GetDecimalValue(headCountDTO.Month10);
                HeadCount.Month11 = DataUtility.GetDecimalValue(headCountDTO.Month11);
                HeadCount.Month12 = DataUtility.GetDecimalValue(headCountDTO.Month12);

                UpdateHeadCount(HeadCount);
            }


            // find and delete items
            var deleteItems = source.Except(target, new HeadCountDTOComparer());

            foreach (HeadCountDTO HeadCountDTO in deleteItems)
            {
                int employeeRoleID = employeeRepository.GetEmployeeRole(HeadCountDTO.EmployeeRole).ID;

                HeadCount HeadCount = GetHeadCount(typeID, year, projectID, employeeRoleID);

                DeleteHeadCount(HeadCount.ID);
            }

            ctx.SaveChanges();

            return(0);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="ExpenseDetail"></param>
        /// <returns></returns>
        public int UpdateExpenseDetail(List <ExpenseDetailDTO> target, int typeID, int year, int projectID)
        {
            var source = GetExpenseDetailByType(typeID, year, projectID);

            ExpenseRepository expenseRepository = new ExpenseRepository(BaseRepository.SystemUserID);
            CountryRepository countryRepository = new CountryRepository(BaseRepository.SystemUserID);

            // find and insert new items.
            var newItems = target.Except(source, new ExpenseDetailDTOComparer());

            foreach (ExpenseDetailDTO ExpenseDetailDTO in newItems)
            {
                ExpenseDetail ExpenseDetail = new ExpenseDetail();

                ExpenseDetail.ProjectID     = projectID;
                ExpenseDetail.ExpenseTypeID = typeID;
                ExpenseDetail.Year          = year;

                ExpenseDetail.ExpenseID = expenseRepository.GetExpense(ExpenseDetailDTO.Expense).ID;
                ExpenseDetail.CountryID = countryRepository.GetCountry(ExpenseDetailDTO.Country).ID;

                ExpenseDetail.Comment = ExpenseDetailDTO.Comment;
                ExpenseDetail.Month01 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month01);
                ExpenseDetail.Month02 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month02);
                ExpenseDetail.Month03 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month03);
                ExpenseDetail.Month04 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month04);
                ExpenseDetail.Month05 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month05);
                ExpenseDetail.Month06 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month06);
                ExpenseDetail.Month07 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month07);
                ExpenseDetail.Month08 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month08);
                ExpenseDetail.Month09 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month09);
                ExpenseDetail.Month10 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month10);
                ExpenseDetail.Month11 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month11);
                ExpenseDetail.Month12 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month12);

                CreateExpenseDetail(ExpenseDetail);
            }


            // find and insert new items.
            var updateItems = target.Union(source, new ExpenseDetailDTOComparer());

            foreach (ExpenseDetailDTO ExpenseDetailDTO in updateItems)
            {
                int expenseID = expenseRepository.GetExpense(ExpenseDetailDTO.Expense).ID;

                ExpenseDetail ExpenseDetail = GetExpenseDetail(typeID, year, projectID, expenseID);

                ExpenseDetail.ExpenseTypeID = typeID;
                ExpenseDetail.Year          = year;
                ExpenseDetail.ProjectID     = projectID;

                ExpenseDetail.ExpenseID = expenseID;
                ExpenseDetail.CountryID = countryRepository.GetCountry(ExpenseDetailDTO.Country).ID;

                ExpenseDetail.Comment = ExpenseDetailDTO.Comment;
                ExpenseDetail.Month01 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month01);
                ExpenseDetail.Month02 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month02);
                ExpenseDetail.Month03 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month03);
                ExpenseDetail.Month04 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month04);
                ExpenseDetail.Month05 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month05);
                ExpenseDetail.Month06 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month06);
                ExpenseDetail.Month07 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month07);
                ExpenseDetail.Month08 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month08);
                ExpenseDetail.Month09 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month09);
                ExpenseDetail.Month10 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month10);
                ExpenseDetail.Month11 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month11);
                ExpenseDetail.Month12 = DataUtility.GetDecimalValue(ExpenseDetailDTO.Month12);

                UpdateExpenseDetail(ExpenseDetail);
            }


            // find and delete items
            var deleteItems = source.Except(target, new ExpenseDetailDTOComparer());

            foreach (ExpenseDetailDTO ExpenseDetailDTO in deleteItems)
            {
                int expenseID = expenseRepository.GetExpense(ExpenseDetailDTO.Expense).ID;

                ExpenseDetail ExpenseDetail = GetExpenseDetail(typeID, year, projectID, expenseID);

                DeleteExpenseDetail(ExpenseDetail.ID);
            }

            ctx.SaveChanges();

            return(0);
        }