using Centron.BusinessLogic; using Centron.BusinessLogic.Sales.CustomerAssets.TimerBilling; using Centron.BusinessLogic.Sales.HourlySurchargeRates; using Centron.BusinessLogic.Sales.Support; using Centron.Data.Entities.Administration.HourlySurchargeRates; using Centron.Data.Entities.Sales.Support.HelpdeskTimerArea; using Centron.Tests.EndToEnd.Infrastructure; using CentronSoftware.Centron.WebServices.Entities.Administration.HourlySurchargeRates; using CentronSoftware.Centron.WebServices.Entities.Sales.CustomerAssets.TimerBilling; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.TimerBillingSearch { public class TimerBillingSearchTest : EndToEndTest { public TimerBillingSearchTest(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { this.PrepareDatabase(); this.SearchOnlyOpenTimers(); } private void PrepareDatabase() { using (var session = new BLSession()) { var baseDate = new DateTime(2020, 1, 1); var rateI3D = session.GetBL().SaveHourlySurchargeRate(new HourlySurchargeRate { Items = new List { new HourlySurchargeRateItem { StartTime = baseDate.AddHours(17), EndTime = baseDate.AddHours(18), MondayPercent = 0.5m, TuesdayPercent = 0.5m, WednesdayPercent = 0.5m, ThursdayPercent = 0.5m, FridayPercent = 0.5m, SaturdayPercent = 1.0m, SundayPercent = 1.5m, HolidayPercent = 1.5m, }, new HourlySurchargeRateItem { StartTime = baseDate.AddHours(18), MondayPercent = 1.0m, TuesdayPercent = 1.0m, WednesdayPercent = 1.0m, ThursdayPercent = 1.0m, FridayPercent = 1.0m, SaturdayPercent = 1.5m, SundayPercent = 3.0m, HolidayPercent = 3.5m, }, new HourlySurchargeRateItem { StartTime = baseDate.AddHours(10), EndTime = baseDate.AddHours(17), SaturdayPercent = 1.0m, SundayPercent = 2.0m, HolidayPercent = 3.0m, }, }, Name = "The test hourly surcharge rate", Status = HourlySurchargeRateStatus.Active }).I3D; session.GetBL().SaveHourlySurchargeRateSettings(new HourlySurchargeRateSettingsDTO { GlobalHourlySurchargeRateI3D = rateI3D }); UpdateTimers(8478, baseDate.AddHours(16), baseDate.AddHours(20)); UpdateTimers(2399, baseDate.AddHours(8), baseDate.AddHours(20)); UpdateTimers(2420, baseDate.AddHours(15), baseDate.AddHours(17.5)); UpdateTimers(2407, baseDate.AddHours(16), baseDate.AddDays(8).AddHours(20)); } // There are no open helpdesks and timers in the database, that reference a master-data-list // So setting the RechPosI3D on these timers to NULL (their helpdesk references a master-data-list), so we get some values in the test this.Sql("UPDATE dbo.hlpdsk_timer SET RechPosI3D = NULL WHERE I3D IN (10490, 10491, 10498)"); void UpdateTimers(int i3d, DateTime start, DateTime end) { HelpdeskTimer timer; using (var session = new BLSession()) timer = session.GetBL().GetHelpdeskTimerByI3D(i3d); timer.Start = start; timer.Stop = end; using (var session = new BLSession()) timer = session.GetBL().SaveHelpdeskTimer(timer, CommonMethodsHelper.GetUser(session).User); } } private void SearchOnlyOpenTimers() { this.Search("OnlyOpenTimers", new TimerBillingFilter { OnlyOpenHelpdesks = true }); } private void Search(string name, TimerBillingFilter filter) { using (var session = new BLSession()) { var timers = session.GetBL().SearchTimers(filter); this.Verifier.Verify(name, timers); } } } }