public PayrollSetup[] GetPayrollSetupData(int?franchiseId) { PayrollSetup[] toReturn = new PayrollSetup[0]; using (var ctx = new ReportingEntities()) { // Query Payroll Setup Reporting Facade and inflate reporting entities IQueryable <vRpt_PayrollSetup> qry = ctx.vRpt_PayrollSetup; if (franchiseId.HasValue) { qry = qry.Where(payrollSetup => payrollSetup.FranchiseID == franchiseId); } var leftJoin = from vRpt_PayrollSetup ps in qry join vRpt_PayrollSpiff psp in ctx.vRpt_PayrollSpiff on ps.PayrollSetupID equals psp.PayrollSetupID into JOINPayrollSetupPayrollSpiff from psp in JOINPayrollSetupPayrollSpiff.DefaultIfEmpty() select new { xPayrollSetup = ps, xPayrollSpiff = psp != null ? psp : null }; var y = leftJoin.GroupBy((xPair) => xPair.xPayrollSetup, xPair => xPair) .Select(xGroup => new PayrollSetup() { FranchiseID = xGroup.Key.FranchiseID, PayrollSetupID = xGroup.Key.PayrollSetupID, OvertimeMethod = xGroup.Key.OvertimeMethod, OvertimeMethodID = xGroup.Key.OvertimeMethodID, OvertimeStarts = xGroup.Key.OvertimeStarts, OTMultiplier = xGroup.Key.OTMultiplier, PayrollSpiffs = xGroup.Where(xPair => xPair.xPayrollSpiff != null) .Select(xPair => new PayrollSpiff() { PayrollSpiffID = xPair.xPayrollSpiff.PayrollSpiffID, PayrollSetupID = xGroup.Key.PayrollSetupID, Active = xPair.xPayrollSpiff.ActiveYN, AddOn = xPair.xPayrollSpiff.AddonYN, Comments = xPair.xPayrollSpiff.Comments, DateExpires = xPair.xPayrollSpiff.DateExpires, JobCode = xPair.xPayrollSpiff.JobCode, JobCodeDescription = xPair.xPayrollSpiff.JobCodeDescription, JobCodeID = xPair.xPayrollSpiff.JobCodeID, PayType = xPair.xPayrollSpiff.PayType, PayTypeID = xPair.xPayrollSpiff.PayTypeID, Rate = xPair.xPayrollSpiff.Rate, ServiceProID = xPair.xPayrollSpiff.ServiceProID, Employee = xPair.xPayrollSpiff.Employee } ) } ); toReturn = y.ToArray <PayrollSetup>(); } return(toReturn); }
public void PayrollSetup_005_SavePayrollSetup_ExistingPayrollSetup() { // Arrange SQLHelper.RunSetupScript("UnitTest_PayrollSetup", "A5"); int franchiseID = 39; decimal overtimeStarts = 100M; int overtimeMethod = 2; decimal overtimeMultiplier = 3.5M; string reportingOvertimeMethod = "Daily"; // Pre-validation, ensure one payrollsetup DOES alredy exist ReportingService rs = ReportingService.Create <ReportingService>(Guid.NewGuid()); SiteBlue.Business.Reporting.PayrollSetup[] arrPayrollSetup = rs.GetPayrollSetupData(franchiseID); Assert.AreEqual <int>(1, arrPayrollSetup.Length); // Act // call save payroll setup on business entity PayrollSetupService payrollSetupService = PayrollSetupService.Create <PayrollSetupService>(Guid.NewGuid()); OperationResult <SiteBlue.Business.PayrollSetup.PayrollSetup> result = payrollSetupService.SavePayrollSetup(franchiseID, overtimeStarts, overtimeMethod, overtimeMultiplier); // Assert // Check the POCO object returned Assert.IsTrue(result.Success); Assert.IsNotNull(result.ResultData); Assert.AreEqual <int>(franchiseID, result.ResultData.FranchiseID); Assert.AreEqual <decimal>(overtimeStarts, result.ResultData.OvertimeStarts); Assert.AreEqual <int>(overtimeMethod, result.ResultData.OvertimeMethodID); Assert.AreEqual <decimal>(overtimeMultiplier, result.ResultData.OTMultiplier); // Can also check the data saved arrPayrollSetup = rs.GetPayrollSetupData(franchiseID); Assert.AreEqual <int>(1, arrPayrollSetup.Length); SiteBlue.Business.Reporting.PayrollSetup reportingPayrollSetup = arrPayrollSetup[0]; Assert.AreEqual <int>(franchiseID, reportingPayrollSetup.FranchiseID); Assert.AreEqual <decimal>(overtimeStarts, (decimal)reportingPayrollSetup.OvertimeStarts); Assert.AreEqual <int>(overtimeMethod, reportingPayrollSetup.OvertimeMethodID); Assert.AreEqual <decimal>(overtimeMultiplier, (decimal)reportingPayrollSetup.OTMultiplier); Assert.AreEqual <string>(reportingOvertimeMethod, reportingPayrollSetup.OvertimeMethod); }
/// <summary> /// This is my "Repository Loader". Not sure where in the solution to put this - BPanjavan /// </summary> /// <returns></returns> private SiteBlue.Areas.OwnerPortal.Models.PayrollSetup GetViewModel() { SiteBlue.Areas.OwnerPortal.Models.PayrollSetup payrollSetupViewModel = null; // Going to need this to set on our view-model ReportingService reportingService = ReportingService.Create <ReportingService>(UserInfo.UserKey); var arrOvertimeMethod = (from overtimeMethod in reportingService.GetOvertimeMethods() select new SiteBlue.Areas.OwnerPortal.Models.OvertimeMethod() { OvertimeMethodName = overtimeMethod.OvertimeMethodName, OvertimeMethodID = overtimeMethod.OvertimeMethodID } ).ToArray(); var arrJobCode = (from jobCode in reportingService.GetJobCodes(UserInfo.CurrentFranchise.FranchiseID) select new SiteBlue.Areas.OwnerPortal.Models.JobCode() { JobCodeID = jobCode.JobCodeID, JobCodeDescription = jobCode.JobCodeDescription, JobCodeName = jobCode.JobCodeName, ActiveYN = jobCode.ActiveYN, FranchiseID = jobCode.FranchiseID, PriceBookActiveYN = jobCode.PriceBookActiveYN, PriceBookID = jobCode.PriceBookID, PriceBookName = jobCode.PriceBookName } ).ToArray(); var arrEmployee = (from employee in reportingService.GetEmployees(UserInfo.CurrentFranchise.FranchiseID) select new SiteBlue.Areas.OwnerPortal.Models.Employees() { EmployeeID = employee.EmployeeID, Employee = employee.EmployeeName, ActiveYN = employee.ActiveYN, FranchiseID = employee.FranchiseID, ServiceProYN = employee.ServiceProYN } ).ToArray(); var arrSpiffPayType = ( from spiffPayType in reportingService.GetSpiffPayTypes() select new SiteBlue.Areas.OwnerPortal.Models.SpiffPayType() { SpiffPayTypeID = spiffPayType.SpiffPayTypeID, SpiffPayTypeName = spiffPayType.SpiffPayTypeName } ).ToArray(); SiteBlue.Business.Reporting.PayrollSetup[] arrPayrollSetup = reportingService.GetPayrollSetupData(UserInfo.CurrentFranchise.FranchiseID); // If there is NO existing PayrollSetup, load an empty one if (arrPayrollSetup.Length == 0) { payrollSetupViewModel = new SiteBlue.Areas.OwnerPortal.Models.PayrollSetup(UserInfo.CurrentFranchise.FranchiseID, 0, 0, 0M, null, arrOvertimeMethod, arrJobCode, arrEmployee, arrSpiffPayType); } else { // Otherwise, load our PayrollSetup Data SiteBlue.Business.Reporting.PayrollSetup payrollSetupExisting = arrPayrollSetup[0]; payrollSetupViewModel = new SiteBlue.Areas.OwnerPortal.Models.PayrollSetup( UserInfo.CurrentFranchise.FranchiseID, (decimal)payrollSetupExisting.OvertimeStarts, payrollSetupExisting.OvertimeMethodID, (decimal)payrollSetupExisting.OTMultiplier, (from reportingSpiff in payrollSetupExisting.PayrollSpiffs select new SiteBlue.Areas.OwnerPortal.Models.PayrollSpiff() { Active = reportingSpiff.Active, AddOn = reportingSpiff.AddOn, Comments = reportingSpiff.Comments, DateExpires = reportingSpiff.DateExpires, DateExpiresFormatted = reportingSpiff.DateExpires.Value.ToShortDateString(), JobCode = reportingSpiff.JobCode, JobCodeDescription = reportingSpiff.JobCodeDescription, JobCodeID = reportingSpiff.JobCodeID, PayrollSetupID = reportingSpiff.PayrollSetupID, PayrollSpiffID = reportingSpiff.PayrollSpiffID, PayType = reportingSpiff.PayType, PayTypeID = reportingSpiff.PayTypeID, Rate = reportingSpiff.Rate, ServiceProID = reportingSpiff.ServiceProID, Employee = reportingSpiff.Employee }), arrOvertimeMethod, arrJobCode, arrEmployee, arrSpiffPayType) { PayrollSetupID = arrPayrollSetup[0].PayrollSetupID }; } return(payrollSetupViewModel); }