Skip to content

Commit e9b892a

Browse files
committed
Refactoring the code to include better saving of device information.
Refactoring the code to have the autobreak calculation in a static helper class.
1 parent 7bfeee7 commit e9b892a

5 files changed

Lines changed: 155 additions & 120 deletions

File tree

eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Controllers/TimePlanningPlanningController.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public async Task<OperationResult> Update(int id, [FromBody] TimePlanningPlannin
4646
{
4747
return await _planningService.Update(id, model);
4848
}
49-
49+
5050
[HttpPut]
5151
[Route("update-by-current-user")]
5252
public async Task<OperationResult> UpdateByCurrentUserNam([FromBody] TimePlanningPlanningPrDayModel model)
@@ -56,9 +56,9 @@ public async Task<OperationResult> UpdateByCurrentUserNam([FromBody] TimePlannin
5656

5757
[HttpGet]
5858
[Route("get-by-user")]
59-
public async Task<OperationDataResult<TimePlanningPlanningModel>> IndexByCurrentUserNam(TimePlanningPlanningRequestModel model)
59+
public async Task<OperationDataResult<TimePlanningPlanningModel>> IndexByCurrentUserNam(TimePlanningPlanningRequestModel obj, string? softwareVersion, string? model, string? manufacturer, string? osVersion)
6060
{
61-
return await _planningService.IndexByCurrentUserNam(model);
61+
return await _planningService.IndexByCurrentUserNam(obj, softwareVersion, model, manufacturer, osVersion);
6262
}
6363
}
6464
}

eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Infrastructure/Helpers/PlanRegistrationHelper.cs

Lines changed: 117 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,119 @@ namespace TimePlanning.Pn.Infrastructure.Helpers;
1818

1919
public static class PlanRegistrationHelper
2020
{
21+
public static PlanRegistration CalculatePauseAutoBreakCalculationActive(
22+
AssignedSite assignedSite, PlanRegistration planning)
23+
{
24+
if (assignedSite.AutoBreakCalculationActive)
25+
{
26+
var minutesActualAtWork =
27+
(planning.Stop1Id - planning.Start1Id
28+
+ planning.Stop2Id - planning.Start2Id
29+
+ planning.Stop3Id - planning.Start3Id
30+
+ planning.Stop4Id - planning.Start4Id
31+
+ planning.Stop5Id - planning.Start5Id) * 5;
32+
if (minutesActualAtWork > 0)
33+
{
34+
var dayOfWeek = planning.Date.DayOfWeek;
35+
var breakTime = 0;
36+
planning.Pause2Id = 0;
37+
planning.Pause3Id = 0;
38+
planning.Pause4Id = 0;
39+
planning.Pause5Id = 0;
40+
switch (dayOfWeek)
41+
{
42+
case DayOfWeek.Monday:
43+
{
44+
var numberOfBreaks = minutesActualAtWork /
45+
assignedSite.MondayBreakMinutesDivider;
46+
breakTime = numberOfBreaks *
47+
assignedSite.MondayBreakMinutesPrDivider;
48+
planning.Pause1Id =
49+
breakTime < assignedSite.MondayBreakMinutesUpperLimit
50+
? breakTime
51+
: assignedSite.MondayBreakMinutesUpperLimit;
52+
break;
53+
}
54+
case DayOfWeek.Tuesday:
55+
{
56+
var numberOfBreaks = minutesActualAtWork /
57+
assignedSite.TuesdayBreakMinutesDivider;
58+
breakTime = numberOfBreaks *
59+
assignedSite.TuesdayBreakMinutesPrDivider;
60+
planning.Pause1Id =
61+
breakTime < assignedSite.TuesdayBreakMinutesUpperLimit
62+
? breakTime
63+
: assignedSite.TuesdayBreakMinutesUpperLimit;
64+
break;
65+
}
66+
case DayOfWeek.Wednesday:
67+
{
68+
var numberOfBreaks = minutesActualAtWork /
69+
assignedSite.WednesdayBreakMinutesDivider;
70+
breakTime = numberOfBreaks *
71+
assignedSite.WednesdayBreakMinutesPrDivider;
72+
planning.Pause1Id =
73+
breakTime < assignedSite.WednesdayBreakMinutesUpperLimit
74+
? breakTime
75+
: assignedSite.WednesdayBreakMinutesUpperLimit;
76+
break;
77+
}
78+
case DayOfWeek.Thursday:
79+
{
80+
var numberOfBreaks = minutesActualAtWork /
81+
assignedSite.ThursdayBreakMinutesDivider;
82+
breakTime = numberOfBreaks *
83+
assignedSite.ThursdayBreakMinutesPrDivider;
84+
planning.Pause1Id =
85+
breakTime < assignedSite.ThursdayBreakMinutesUpperLimit
86+
? breakTime
87+
: assignedSite.ThursdayBreakMinutesUpperLimit;
88+
break;
89+
}
90+
case DayOfWeek.Friday:
91+
{
92+
var numberOfBreaks = minutesActualAtWork /
93+
assignedSite.FridayBreakMinutesDivider;
94+
breakTime = numberOfBreaks *
95+
assignedSite.FridayBreakMinutesPrDivider;
96+
planning.Pause1Id =
97+
breakTime < assignedSite.FridayBreakMinutesUpperLimit
98+
? breakTime
99+
: assignedSite.FridayBreakMinutesUpperLimit;
100+
break;
101+
}
102+
case DayOfWeek.Saturday:
103+
{
104+
var numberOfBreaks = minutesActualAtWork /
105+
assignedSite.SaturdayBreakMinutesDivider;
106+
breakTime = numberOfBreaks *
107+
assignedSite.SaturdayBreakMinutesPrDivider;
108+
planning.Pause1Id =
109+
breakTime < assignedSite.SaturdayBreakMinutesUpperLimit
110+
? breakTime
111+
: assignedSite.SaturdayBreakMinutesUpperLimit;
112+
break;
113+
}
114+
case DayOfWeek.Sunday:
115+
{
116+
var numberOfBreaks = minutesActualAtWork /
117+
assignedSite.SundayBreakMinutesDivider;
118+
breakTime = numberOfBreaks *
119+
assignedSite.SundayBreakMinutesPrDivider;
120+
planning.Pause1Id =
121+
breakTime < assignedSite.SundayBreakMinutesUpperLimit
122+
? breakTime
123+
: assignedSite.SundayBreakMinutesUpperLimit;
124+
break;
125+
}
126+
}
127+
}
128+
}
129+
130+
return planning;
131+
}
132+
133+
21134
public static async Task<TimePlanningPlanningModel> UpdatePlanRegistrationsInPeriod(
22135
List<PlanRegistration> planningsInPeriod,
23136
TimePlanningPlanningModel siteModel,
@@ -213,14 +326,14 @@ public static async Task<TimePlanningPlanningModel> UpdatePlanRegistrationsInPer
213326
var calculatedPlanHoursInMinutes = 0;
214327
if (planRegistration.PlannedStartOfShift1 != 0 && planRegistration.PlannedEndOfShift1 != 0)
215328
{
216-
calculatedPlanHoursInMinutes += (int)planRegistration.PlannedEndOfShift1 -
217-
(int)planRegistration.PlannedStartOfShift1 - planRegistration.PlannedBreakOfShift1;
329+
calculatedPlanHoursInMinutes += planRegistration.PlannedEndOfShift1 -
330+
planRegistration.PlannedStartOfShift1 - planRegistration.PlannedBreakOfShift1;
218331
planRegistration.PlanHours = calculatedPlanHoursInMinutes / 60.0;
219332
}
220333
if (planRegistration.PlannedStartOfShift2 != 0 && planRegistration.PlannedEndOfShift2 != 0)
221334
{
222-
calculatedPlanHoursInMinutes += (int)planRegistration.PlannedEndOfShift2 -
223-
(int)planRegistration.PlannedStartOfShift2 - planRegistration.PlannedBreakOfShift2;
335+
calculatedPlanHoursInMinutes += planRegistration.PlannedEndOfShift2 -
336+
planRegistration.PlannedStartOfShift2 - planRegistration.PlannedBreakOfShift2;
224337
planRegistration.PlanHours = calculatedPlanHoursInMinutes / 60.0;
225338
}
226339

eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Services/TimePlanningPlanningService/ITimePlanningPlanningService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public interface ITimePlanningPlanningService
3535
//
3636
// Task<OperationResult> UpdateCreatePlanning(TimePlanningPlanningUpdateModel model);
3737
Task<OperationResult> Update(int id, TimePlanningPlanningPrDayModel model);
38-
Task<OperationDataResult<TimePlanningPlanningModel>> IndexByCurrentUserNam(TimePlanningPlanningRequestModel model);
38+
Task<OperationDataResult<TimePlanningPlanningModel>> IndexByCurrentUserNam(TimePlanningPlanningRequestModel obj, string? softwareVersion, string? model, string? manufacturer, string? osVersion);
3939

4040
Task<OperationResult> UpdateByCurrentUserNam(TimePlanningPlanningPrDayModel model);
4141
}

eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Services/TimePlanningPlanningService/TimePlanningPlanningService.cs

Lines changed: 17 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -204,13 +204,23 @@ await dbContext.PlanRegistrations.AsNoTracking()
204204
}
205205

206206
public async Task<OperationDataResult<TimePlanningPlanningModel>> IndexByCurrentUserNam(
207-
TimePlanningPlanningRequestModel model)
207+
TimePlanningPlanningRequestModel obj, string? softwareVersion, string? model, string? manufacturer, string? osVersion)
208208
{
209209
var sdkCore = await core.GetCore();
210210
var sdkDbContext = sdkCore.DbContextHelper.GetDbContext();
211211
var currentUserAsync = await userService.GetCurrentUserAsync();
212212
var currentUser = baseDbContext.Users
213213
.Single(x => x.Id == currentUserAsync.Id);
214+
215+
if (model != null)
216+
{
217+
currentUser.TimeRegistrationModel = model;
218+
currentUser.TimeRegistrationManufacturer = manufacturer;
219+
currentUser.TimeRegistrationSoftwareVersion = softwareVersion;
220+
currentUser.TimeRegistrationOsVersion = osVersion;
221+
await baseDbContext.SaveChangesAsync();
222+
}
223+
214224
var fullName = currentUser.FirstName.Trim() + " " + currentUser.LastName.Trim();
215225
var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x =>
216226
x.Name.Replace(" ", "") == fullName.Replace(" ", "") &&
@@ -228,11 +238,11 @@ public async Task<OperationDataResult<TimePlanningPlanningModel>> IndexByCurrent
228238
.FirstOrDefaultAsync(x => x.SiteId == site.MicrotingUid);
229239

230240
var datesInPeriod = new List<DateTime>();
231-
var midnightOfDateFrom = new DateTime(model.DateFrom!.Value.Year, model.DateFrom.Value.Month, model.DateFrom.Value.Day, 0, 0, 0);
232-
var midnightOfDateTo = new DateTime(model.DateTo!.Value.Year, model.DateTo.Value.Month, model.DateTo.Value.Day, 23, 59, 59);
241+
var midnightOfDateFrom = new DateTime(obj.DateFrom!.Value.Year, obj.DateFrom.Value.Month, obj.DateFrom.Value.Day, 0, 0, 0);
242+
var midnightOfDateTo = new DateTime(obj.DateTo!.Value.Year, obj.DateTo.Value.Month, obj.DateTo.Value.Day, 23, 59, 59);
233243
var todayMidnight = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
234-
var date = model.DateFrom;
235-
while (date <= model.DateTo)
244+
var date = obj.DateFrom;
245+
while (date <= obj.DateTo)
236246
{
237247
datesInPeriod.Add(date.Value);
238248
date = date.Value.AddDays(1);
@@ -335,7 +345,7 @@ await dbContext.PlanRegistrations.AsNoTracking()
335345
midnightOfDateFrom,
336346
midnightOfDateTo);
337347

338-
siteModel.PlanningPrDayModels = model.IsSortDsc
348+
siteModel.PlanningPrDayModels = obj.IsSortDsc
339349
? siteModel.PlanningPrDayModels.OrderByDescending(x => x.Date).ToList()
340350
: siteModel.PlanningPrDayModels.OrderBy(x => x.Date).ToList();
341351

@@ -729,111 +739,7 @@ public async Task<OperationResult> UpdateByCurrentUserNam(
729739
planning.Pause1Id = model.Pause1Id ?? planning.Pause1Id;
730740
planning.Pause2Id = model.Pause2Id ?? planning.Pause2Id;
731741

732-
if (assignedSite.AutoBreakCalculationActive)
733-
{
734-
var hoursPlannedToBeAtWorkInMinutes =
735-
(planning.Stop1Id - planning.Start1Id
736-
+ planning.Stop2Id - planning.Start2Id
737-
+ planning.Stop3Id - planning.Start3Id
738-
+ planning.Stop4Id - planning.Start4Id
739-
+ planning.Stop5Id - planning.Start5Id) * 5;
740-
if (hoursPlannedToBeAtWorkInMinutes > 0)
741-
{
742-
var dayOfWeek = planning.Date.DayOfWeek;
743-
var breakTime = 0;
744-
planning.Pause2Id = 0;
745-
planning.Pause3Id = 0;
746-
planning.Pause4Id = 0;
747-
planning.Pause5Id = 0;
748-
switch (dayOfWeek)
749-
{
750-
case DayOfWeek.Monday:
751-
{
752-
var numberOfBreaks = hoursPlannedToBeAtWorkInMinutes /
753-
assignedSite.MondayBreakMinutesDivider;
754-
breakTime = (int)numberOfBreaks *
755-
assignedSite.MondayBreakMinutesPrDivider;
756-
planning.Pause1Id =
757-
breakTime < assignedSite.MondayBreakMinutesUpperLimit
758-
? breakTime
759-
: assignedSite.MondayBreakMinutesUpperLimit;
760-
break;
761-
}
762-
case DayOfWeek.Tuesday:
763-
{
764-
var numberOfBreaks = hoursPlannedToBeAtWorkInMinutes /
765-
assignedSite.TuesdayBreakMinutesDivider;
766-
breakTime = (int)numberOfBreaks *
767-
assignedSite.TuesdayBreakMinutesPrDivider;
768-
planning.Pause1Id =
769-
breakTime < assignedSite.TuesdayBreakMinutesUpperLimit
770-
? breakTime
771-
: assignedSite.TuesdayBreakMinutesUpperLimit;
772-
break;
773-
}
774-
case DayOfWeek.Wednesday:
775-
{
776-
var numberOfBreaks = hoursPlannedToBeAtWorkInMinutes /
777-
assignedSite.WednesdayBreakMinutesDivider;
778-
breakTime = (int)numberOfBreaks *
779-
assignedSite.WednesdayBreakMinutesPrDivider;
780-
planning.Pause1Id =
781-
breakTime < assignedSite.WednesdayBreakMinutesUpperLimit
782-
? breakTime
783-
: assignedSite.WednesdayBreakMinutesUpperLimit;
784-
break;
785-
}
786-
case DayOfWeek.Thursday:
787-
{
788-
var numberOfBreaks = hoursPlannedToBeAtWorkInMinutes /
789-
assignedSite.ThursdayBreakMinutesDivider;
790-
breakTime = (int)numberOfBreaks *
791-
assignedSite.ThursdayBreakMinutesPrDivider;
792-
planning.Pause1Id =
793-
breakTime < assignedSite.ThursdayBreakMinutesUpperLimit
794-
? breakTime
795-
: assignedSite.ThursdayBreakMinutesUpperLimit;
796-
break;
797-
}
798-
case DayOfWeek.Friday:
799-
{
800-
var numberOfBreaks = hoursPlannedToBeAtWorkInMinutes /
801-
assignedSite.FridayBreakMinutesDivider;
802-
breakTime = (int)numberOfBreaks *
803-
assignedSite.FridayBreakMinutesPrDivider;
804-
planning.Pause1Id =
805-
breakTime < assignedSite.FridayBreakMinutesUpperLimit
806-
? breakTime
807-
: assignedSite.FridayBreakMinutesUpperLimit;
808-
break;
809-
}
810-
case DayOfWeek.Saturday:
811-
{
812-
var numberOfBreaks = hoursPlannedToBeAtWorkInMinutes /
813-
assignedSite.SaturdayBreakMinutesDivider;
814-
breakTime = (int)numberOfBreaks *
815-
assignedSite.SaturdayBreakMinutesPrDivider;
816-
planning.Pause1Id =
817-
breakTime < assignedSite.SaturdayBreakMinutesUpperLimit
818-
? breakTime
819-
: assignedSite.SaturdayBreakMinutesUpperLimit;
820-
break;
821-
}
822-
case DayOfWeek.Sunday:
823-
{
824-
var numberOfBreaks = hoursPlannedToBeAtWorkInMinutes /
825-
assignedSite.SundayBreakMinutesDivider;
826-
breakTime = (int)numberOfBreaks *
827-
assignedSite.SundayBreakMinutesPrDivider;
828-
planning.Pause1Id =
829-
breakTime < assignedSite.SundayBreakMinutesUpperLimit
830-
? breakTime
831-
: assignedSite.SundayBreakMinutesUpperLimit;
832-
break;
833-
}
834-
}
835-
}
836-
}
742+
planning = PlanRegistrationHelper.CalculatePauseAutoBreakCalculationActive(assignedSite, planning);
837743
}
838744
else
839745
{

0 commit comments

Comments
 (0)