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);
        }
Example #3
0
        /// <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);
        }