// //////////////////////////////////////////////////////////////////////// // PUBLIC METHODS // /// <summary> /// Load /// </summary> /// <param name="works">works</param> /// <param name="projectId">projectId</param> /// <param name="startDate">startDate</param> /// <param name="endDate">endDate</param> /// <param name="companyId">companyId</param> public void Load(ArrayList works, int projectId, DateTime startDate, DateTime endDate, int companyId) { int refId = 0; // Foreach of Works (FLL, RA, JL, PR, MH Rehab, MOB, Other) foreach (string work_ in works) { // Load Functions by Work ProjectCostingSheetAddFunctionListGateway projectCostingSheetAddFunctionListGateway = new ProjectCostingSheetAddFunctionListGateway(); projectCostingSheetAddFunctionListGateway.LoadByWork_(work_); // Foreach of Functions foreach (ProjectCostingSheetAddTDS.FunctionListRow functionListRow in (ProjectCostingSheetAddTDS.FunctionListDataTable)projectCostingSheetAddFunctionListGateway.Table) { ProjectCostingSheetAddUnitListGateway projectCostingSheetAddUnitListGateway = new ProjectCostingSheetAddUnitListGateway(Data); projectCostingSheetAddUnitListGateway.LoadByProjectIdStartDateEndDateWorkFunction(projectId, startDate, endDate, work_, functionListRow.Function_, companyId); foreach (ProjectCostingSheetAddTDS.UnitListRow unitListRow in (ProjectCostingSheetAddTDS.UnitListDataTable)projectCostingSheetAddUnitListGateway.Table) { DateTime newStartDate = new DateTime(); newStartDate = startDate; DateTime newEndDate = new DateTime(); newEndDate = endDate; ProjectCostingSheetAddUnitPayPeriodGateway ProjectCostingSheetAddUnitPayPeriodGateway = new ProjectCostingSheetAddUnitPayPeriodGateway(Data); ProjectCostingSheetAddUnitPayPeriodGateway.LoadByStartDateEndDateUnitId(startDate, endDate, unitListRow.UnitID); if (ProjectCostingSheetAddUnitPayPeriodGateway.Table.Rows.Count > 0) { foreach (ProjectCostingSheetAddTDS.UnitPayPeriodRow unitPayPeriodRow in (ProjectCostingSheetAddTDS.UnitPayPeriodDataTable)ProjectCostingSheetAddUnitPayPeriodGateway.Table) { newEndDate = unitPayPeriodRow.Date_.AddDays(-1); ProjectCostingSheetAddOriginalUnitGateway projectCostingSheetAddOriginalUnitGateway = new ProjectCostingSheetAddOriginalUnitGateway(Data); projectCostingSheetAddOriginalUnitGateway.Load(projectId, newStartDate, newEndDate, work_, functionListRow.Function_, unitListRow.UnitID); if (projectCostingSheetAddOriginalUnitGateway.Table.Rows.Count > 0) { ArrayList days = new ArrayList(); ArrayList daysTowed = new ArrayList(); double quantity = 0; bool isTowedUnitId = false; PrintProjectCostingGateway verifGateway = new PrintProjectCostingGateway(new DataSet()); foreach (ProjectCostingSheetAddTDS.OriginalUnitRow originalUnitRow in (ProjectCostingSheetAddTDS.OriginalUnitDataTable)projectCostingSheetAddOriginalUnitGateway.Table) { int towedUnitId = 0; if (!originalUnitRow.IsTowedUnitIDNull()) { towedUnitId = Convert.ToInt32(originalUnitRow.TowedUnitID); } if (originalUnitRow.UnitID != towedUnitId) { if (!days.Contains(originalUnitRow.Date_)) { int amountProjects = verifGateway.UnitSameDayUseSeveralProjects(originalUnitRow.Date_, originalUnitRow.UnitID); if (amountProjects > 1) { double tempQuantity = 1 / Convert.ToDouble(amountProjects); int amountFunctions = verifGateway.UnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = tempQuantity / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } else { double tempQuantity = 1; int amountFunctions = verifGateway.UnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = 1 / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } days.Add(originalUnitRow.Date_); } } else { isTowedUnitId = true; if (!daysTowed.Contains(originalUnitRow.Date_)) { int amountProjects = verifGateway.TowedUnitSameDayUseSeveralProjects(originalUnitRow.Date_, originalUnitRow.UnitID); if (amountProjects > 1) { double tempQuantity = 1 / Convert.ToDouble(amountProjects); int amountFunctions = verifGateway.TowedUnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = tempQuantity / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } else { double tempQuantity = 1; int amountFunctions = verifGateway.TowedUnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = 1 / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } daysTowed.Add(originalUnitRow.Date_); } } } ProjectCostingSheetAddTDS.UnitsInformationRow newRow = ((ProjectCostingSheetAddTDS.UnitsInformationDataTable)Table).NewUnitsInformationRow(); GetUnitData(newStartDate, newEndDate, unitListRow.UnitID, work_, newRow, isTowedUnitId); newRow.CostingSheetID = 0; newRow.Work_ = work_; newRow.UnitID = unitListRow.UnitID; newRow.RefID = refId++; newRow.Quantity = quantity; newRow.TotalCostCad = (Convert.ToDecimal(quantity) * newRow.CostCad); newRow.TotalCostUsd = (Convert.ToDecimal(quantity) * newRow.CostUsd); newRow.Deleted = false; newRow.InDatabase = false; newRow.COMPANY_ID = companyId; newRow.UnitCode = unitListRow.UnitCode; newRow.UnitDescription = unitListRow.Description; newRow.UnitOfMeasurement = unitListRow.UnitOfMeasurement; newRow.StartDate = newStartDate; newRow.EndDate = newEndDate; newRow.FromDatabase = true; newRow.Function_ = functionListRow.Function_; newRow.WorkFunction = work_ + " . " + functionListRow.Function_; ((ProjectCostingSheetAddTDS.UnitsInformationDataTable)Table).AddUnitsInformationRow(newRow); } newStartDate = newEndDate.AddDays(1); } if (newEndDate <= endDate) { ProjectCostingSheetAddOriginalUnitGateway projectCostingSheetAddOriginalUnitGateway = new ProjectCostingSheetAddOriginalUnitGateway(Data); projectCostingSheetAddOriginalUnitGateway.Load(projectId, newStartDate, endDate, work_, functionListRow.Function_, unitListRow.UnitID); if (projectCostingSheetAddOriginalUnitGateway.Table.Rows.Count > 0) { ArrayList days = new ArrayList(); ArrayList daysTowed = new ArrayList(); double quantity = 0; bool isTowedUnitId = false; PrintProjectCostingGateway verifGateway = new PrintProjectCostingGateway(new DataSet()); foreach (ProjectCostingSheetAddTDS.OriginalUnitRow originalUnitRow in (ProjectCostingSheetAddTDS.OriginalUnitDataTable)projectCostingSheetAddOriginalUnitGateway.Table) { int towedUnitId = 0; if (!originalUnitRow.IsTowedUnitIDNull()) { towedUnitId = Convert.ToInt32(originalUnitRow.TowedUnitID); } if (originalUnitRow.UnitID != towedUnitId) { if (!days.Contains(originalUnitRow.Date_)) { int amountProjects = verifGateway.UnitSameDayUseSeveralProjects(originalUnitRow.Date_, originalUnitRow.UnitID); if (amountProjects > 1) { double tempQuantity = 1 / Convert.ToDouble(amountProjects); int amountFunctions = verifGateway.UnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = tempQuantity / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } else { double tempQuantity = 1; int amountFunctions = verifGateway.UnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = 1 / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } days.Add(originalUnitRow.Date_); } } else { isTowedUnitId = true; if (!daysTowed.Contains(originalUnitRow.Date_)) { int amountProjects = verifGateway.TowedUnitSameDayUseSeveralProjects(originalUnitRow.Date_, originalUnitRow.UnitID); if (amountProjects > 1) { double tempQuantity = 1 / Convert.ToDouble(amountProjects); int amountFunctions = verifGateway.TowedUnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = tempQuantity / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } else { double tempQuantity = 1; int amountFunctions = verifGateway.TowedUnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = 1 / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } daysTowed.Add(originalUnitRow.Date_); } } } ProjectCostingSheetAddTDS.UnitsInformationRow newRow = ((ProjectCostingSheetAddTDS.UnitsInformationDataTable)Table).NewUnitsInformationRow(); GetUnitData(newStartDate, endDate, unitListRow.UnitID, work_, newRow, isTowedUnitId); newRow.CostingSheetID = 0; newRow.Work_ = work_; newRow.UnitID = unitListRow.UnitID; newRow.RefID = refId++; newRow.Quantity = quantity; newRow.TotalCostCad = (Convert.ToDecimal(quantity) * newRow.CostCad); newRow.TotalCostUsd = (Convert.ToDecimal(quantity) * newRow.CostUsd); newRow.Deleted = false; newRow.InDatabase = false; newRow.COMPANY_ID = companyId; newRow.UnitCode = unitListRow.UnitCode; newRow.UnitDescription = unitListRow.Description; newRow.UnitOfMeasurement = unitListRow.UnitOfMeasurement; newRow.StartDate = newStartDate; newRow.EndDate = endDate; newRow.FromDatabase = true; newRow.Function_ = functionListRow.Function_; newRow.WorkFunction = work_ + " . " + functionListRow.Function_; ((ProjectCostingSheetAddTDS.UnitsInformationDataTable)Table).AddUnitsInformationRow(newRow); } } } else { ProjectCostingSheetAddOriginalUnitGateway projectCostingSheetAddOriginalUnitGateway = new ProjectCostingSheetAddOriginalUnitGateway(Data); projectCostingSheetAddOriginalUnitGateway.Load(projectId, startDate, endDate, work_, functionListRow.Function_, unitListRow.UnitID); if (projectCostingSheetAddOriginalUnitGateway.Table.Rows.Count > 0) { ArrayList days = new ArrayList(); ArrayList daysTowed = new ArrayList(); double quantity = 0; bool isTowedUnitId = false; PrintProjectCostingGateway verifGateway = new PrintProjectCostingGateway(new DataSet()); foreach (ProjectCostingSheetAddTDS.OriginalUnitRow originalUnitRow in (ProjectCostingSheetAddTDS.OriginalUnitDataTable)projectCostingSheetAddOriginalUnitGateway.Table) { int towedUnitId = 0; if (!originalUnitRow.IsTowedUnitIDNull()) towedUnitId = Convert.ToInt32(originalUnitRow.TowedUnitID); if (originalUnitRow.UnitID != towedUnitId) { if (!days.Contains(originalUnitRow.Date_)) { int amountProjects = verifGateway.UnitSameDayUseSeveralProjects(originalUnitRow.Date_, originalUnitRow.UnitID); if (amountProjects > 1) { double tempQuantity = 1 / Convert.ToDouble(amountProjects); int amountFunctions = verifGateway.UnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = tempQuantity / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } else { double tempQuantity = 1; int amountFunctions = verifGateway.UnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = 1 / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } days.Add(originalUnitRow.Date_); } } else { isTowedUnitId = true; if (!daysTowed.Contains(originalUnitRow.Date_)) { int amountProjects = verifGateway.TowedUnitSameDayUseSeveralProjects(originalUnitRow.Date_, originalUnitRow.UnitID); if (amountProjects > 1) { double tempQuantity = 1 / Convert.ToDouble(amountProjects); int amountFunctions = verifGateway.TowedUnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = tempQuantity / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } else { double tempQuantity = 1; int amountFunctions = verifGateway.TowedUnitSameDayUseSeveralWorkFunctions(projectId, originalUnitRow.Date_, originalUnitRow.UnitID); if (amountFunctions > 0) { tempQuantity = 1 / Convert.ToDouble(amountFunctions); } quantity = quantity + tempQuantity; } daysTowed.Add(originalUnitRow.Date_); } } } ProjectCostingSheetAddTDS.UnitsInformationRow newRow = ((ProjectCostingSheetAddTDS.UnitsInformationDataTable)Table).NewUnitsInformationRow(); GetUnitData(startDate, endDate, unitListRow.UnitID, work_, newRow, isTowedUnitId); newRow.CostingSheetID = 0; newRow.Work_ = work_; newRow.UnitID = unitListRow.UnitID; newRow.RefID = refId++; newRow.Quantity = quantity; newRow.TotalCostCad = (Convert.ToDecimal(quantity) * newRow.CostCad); newRow.TotalCostUsd = (Convert.ToDecimal(quantity) * newRow.CostUsd); newRow.Deleted = false; newRow.InDatabase = false; newRow.COMPANY_ID = companyId; newRow.UnitCode = unitListRow.UnitCode; newRow.UnitDescription = unitListRow.Description; newRow.UnitOfMeasurement = unitListRow.UnitOfMeasurement; newRow.StartDate = startDate; newRow.EndDate = endDate; newRow.FromDatabase = true; newRow.Function_ = functionListRow.Function_; newRow.WorkFunction = work_ + " . " + functionListRow.Function_; ((ProjectCostingSheetAddTDS.UnitsInformationDataTable)Table).AddUnitsInformationRow(newRow); } } } } } }
/// <summary> /// GetUnitData /// </summary> /// <param name="startDate">startDate</param> /// <param name="endDate">endDate</param> /// <param name="unitId">unitId</param> /// <param name="work_">work_</param> /// <param name="newRow">newRow</param> /// <param name="isTowedUnitId">isTowedUnitId</param> private void GetUnitData(DateTime startDate, DateTime endDate, int unitId, string work_, ProjectCostingSheetAddTDS.UnitsInformationRow newRow, bool isTowedUnitId) { ProjectCostingSheetAddUnitListGateway projectCostingSheetAddUnitListGateway = new ProjectCostingSheetAddUnitListGateway(); projectCostingSheetAddUnitListGateway.LoadByStartDateEndDateUnitIdWork_(startDate, endDate, unitId, work_); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByStartDateEndDateUnitId(startDate, endDate, unitId); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByStartDateUnitIdWork_(startDate, unitId, work_); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByStartDateUnitId(startDate, unitId); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByUnitId(unitId); } } } } DataRow unitRow = projectCostingSheetAddUnitListGateway.GetRow(unitId); if (isTowedUnitId) { try { newRow.CostCad = (decimal)unitRow["CostCad"] / 2; newRow.CostUsd = (decimal)unitRow["CostUsd"] / 2; } catch { newRow.CostCad = 0; newRow.CostUsd = 0; } } else { newRow.CostCad = (decimal)unitRow["CostCad"]; newRow.CostUsd = (decimal)unitRow["CostUsd"]; } }
/// <summary> /// GetUnitDailyRate /// </summary> /// <param name="startDate">startDate</param> /// <param name="endDate">endDate</param> /// <param name="unitId">unitId</param> /// <param name="work_">work_</param> /// <param name="projectId">projectId</param> /// <param name="countryId">countryId</param> /// <returns></returns> private decimal? GetUnitDailyRate(DateTime startDate, DateTime endDate, int unitId, string work_, int projectId, Int64 countryId) { decimal? dailyRate = null; ProjectCostingSheetAddUnitListGateway projectCostingSheetAddUnitListGateway = new ProjectCostingSheetAddUnitListGateway(); projectCostingSheetAddUnitListGateway.LoadByStartDateEndDateUnitIdWork_(startDate, endDate, unitId, work_); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByStartDateEndDateUnitId(startDate, endDate, unitId); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByStartDateUnitIdWork_(startDate, unitId, work_); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByStartDateUnitId(startDate, unitId); if (projectCostingSheetAddUnitListGateway.Table.Rows.Count <= 0) { projectCostingSheetAddUnitListGateway.LoadByUnitId(unitId); } } } } if (countryId == 1) //Canada { decimal? costCad = projectCostingSheetAddUnitListGateway.GetCostCad(unitId); if (costCad.HasValue) { dailyRate = costCad; } } else { decimal? costUsd =projectCostingSheetAddUnitListGateway.GetCostUsd(unitId); if (costUsd.HasValue) { dailyRate = costUsd; } } return dailyRate; }