private async Task SwapWorkday(GetWorkingPeriodResponse request, WorkingPeriod workingPeriod) { var swapWorkDay = await _context.WorkDays.Include(wd => wd.WorkingPeriods).FirstOrDefaultAsync(wd => wd.Date == request.WorkingPeriod.StartTime.Date && wd.ContractId == request.UserContext.CurrentContract.Id); if (swapWorkDay == null) { _requiredCreationOfNewWorkDay = true; var newWorkDay = new WorkDay() { ContractId = request.UserContext.CurrentContract.Id, Date = request.WorkingPeriod.StartTime.Date, WorkDayType = workingPeriod.StartTime.Date.ToWorkDayType(), }; newWorkDay.RequiredHours = newWorkDay.GetRequiredHoursForDay(request.UserContext.CurrentContract.HoursPerWeek); workingPeriod.WorkDay = newWorkDay; await _context.WorkDays.AddAsync(newWorkDay); return; } _swappedWorkDayId = swapWorkDay.Id; swapWorkDay.WorkingPeriods.Add(workingPeriod); }
public void GetWorkTime_Gets_TimeSpan() { var wp = new WorkingPeriod() { EndTime = new DateTime(2021, 2, 4, 10, 0, 0), StartTime = new DateTime(2021, 2, 4, 9, 1, 0) }; wp.GetWorkTime().Should().Be(TimeSpan.FromMinutes(59)); }
public static TimeSpan GetWorkTime(this WorkingPeriod period) { if (period.EndTime.HasValue) { return(period.EndTime.Value - period.StartTime); } return(DateTime.Now - period.StartTime); }
bool TryReadElementFromXml(EwsServiceXmlReader reader) { switch (reader.LocalName) { case XmlElementNames.TimeZone: LegacyAvailabilityTimeZone legacyTimeZone = new LegacyAvailabilityTimeZone(); legacyTimeZone.LoadFromXml(reader, reader.LocalName); this.timeZone = legacyTimeZone.ToTimeZoneInfo(); return(true); case XmlElementNames.WorkingPeriodArray: List <WorkingPeriod> workingPeriods = new List <WorkingPeriod>(); do { reader.Read(); if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.WorkingPeriod)) { WorkingPeriod workingPeriod = new WorkingPeriod(); workingPeriod.LoadFromXml(reader, reader.LocalName); workingPeriods.Add(workingPeriod); } }while (!reader.IsEndElement(XmlNamespace.Types, XmlElementNames.WorkingPeriodArray)); // Availability supports a structure that can technically represent different working // times for each day of the week. This is apparently how the information is stored in // Exchange. However, no client (Outlook, OWA) either will let you specify different // working times for each day of the week, and Outlook won't either honor that complex // structure if it happens to be in Exchange. // So here we'll do what Outlook and OWA do: we'll use the start and end times of the // first working period, but we'll use the week days of all the periods. this.startTime = workingPeriods[0].StartTime; this.endTime = workingPeriods[0].EndTime; for (WorkingPeriod workingPeriod in workingPeriods) { for (DayOfTheWeek dayOfWeek in workingPeriods[0].DaysOfWeek) { if (!this.daysOfTheWeek.Contains(dayOfWeek)) { this.daysOfTheWeek.Add(dayOfWeek); } } } return(true); default: return(false); } }
public void GetWorkTime_Gets_TimeSpan_Without_EndTime() { var wp = new WorkingPeriod() { StartTime = DateTime.Now.AddMinutes(-59) }; var minutes = Convert.ToInt32(wp.GetWorkTime().TotalMinutes); minutes.Should().Be(59); }
// Token: 0x06000B9D RID: 2973 RVA: 0x0004D360 File Offset: 0x0004B560 internal void GenerateOutOfPolicyOutOfWorkingHours(WorkingHours wh) { WorkingPeriod workingPeriod = wh.WorkingPeriodArray[0]; StringCollection stringCollection = new StringCollection(); string[] dayNames = this.CultureInfo.DateTimeFormat.DayNames; for (int i = 0; i < 7; i++) { DaysOfWeek daysOfWeek = WorkingHours.DayToDays((DayOfWeek)i); if ((workingPeriod.DayOfWeek & daysOfWeek) != (DaysOfWeek)0) { stringCollection.Add(dayNames[i]); } } ExDateTime now = ExDateTime.GetNow(this.CalendarItemTz); ExDateTime exDateTime = new ExDateTime(this.CalendarItemTz, now.Year, now.Month, now.Day, this.CultureInfo.Calendar); ExDateTime exDateTime2 = exDateTime.AddMinutes((double)workingPeriod.StartTimeInMinutes); ExDateTime exDateTime3 = exDateTime.AddMinutes((double)workingPeriod.EndTimeInMinutes); string startDisplay = exDateTime2.ToString(this.CultureInfo.DateTimeFormat.ShortTimePattern); string endDisplay = exDateTime3.ToString(this.CultureInfo.DateTimeFormat.ShortTimePattern); string daysString; if (stringCollection.Count == 0) { daysString = string.Empty; } else { daysString = " " + Strings.descOn(stringCollection[0]).ToString(this.CultureInfo); if (stringCollection.Count > 1) { for (int j = 1; j < stringCollection.Count - 1; j++) { daysString = Strings.descCommaList(daysString, stringCollection[j]).ToString(this.CultureInfo); } daysString = Strings.descAndList(daysString, stringCollection[stringCollection.Count - 1]).ToString(this.CultureInfo); } } this.GetResponseBody = (() => this.GenerateResponseWithTimeZoneInfo(Strings.descWorkingHours(startDisplay, endDisplay, daysString).ToString(this.CultureInfo))); this.GetResponseSubjectPrefix = delegate() { if (!this.IsRecurrence) { return(Strings.descDeclined.ToString(this.CultureInfo)); } return(Strings.descDeclinedAll.ToString(this.CultureInfo)); }; this.GetDelegateBody = (() => this.GenerateOutOfPolicyDelegateResponse(Strings.descDelegateWorkHours(Strings.descWorkingHours(startDisplay, endDisplay, daysString).ToString(this.DelegateCultureInfo)))); }
public async Task <GetWorkingPeriodResponse> Handle(GetWorkingPeriodRequest request, CancellationToken cancellationToken) { WorkingPeriod workingPeriod = await _context.WorkingPeriods.Where(x => x.WorkDayId == request.WorkDayId && x.Id == request.WorkingPeriodId) .SingleOrDefaultAsync(); if (workingPeriod != null) { return(new GetWorkingPeriodResponse { WorkingPeriod = workingPeriod, StartDate = workingPeriod.StartTime.Date, StartTime = workingPeriod.StartTime.TimeOfDay, EndDate = workingPeriod.EndTime?.Date, EndTime = workingPeriod.EndTime?.TimeOfDay, UserContext = new UserContext { User = request.User, UserEmail = request.UserEmail, UserIsAdmin = request.UserIsAdmin, CurrentContract = request.CurrentContract } }); } return(default);
public AttendeeWorkHours(WorkingHours workingHours) { if (workingHours != null) { WorkingPeriod workingPeriod = workingHours.WorkingPeriodArray[0]; TimeSpan timeSpan = TimeSpan.FromMinutes((double)workingPeriod.StartTimeInMinutes); TimeSpan timeSpan2 = TimeSpan.FromMinutes((double)workingPeriod.EndTimeInMinutes); AttendeeWorkHours.Validate(timeSpan, timeSpan2); this.startTime = timeSpan; this.endTime = timeSpan2; this.daysOfWeek = workingPeriod.DayOfWeek; this.timeZone = workingHours.ExTimeZone; } else { this.startTime = TimeSpan.Zero; this.endTime = TimeSpan.Zero; this.daysOfWeek = (DaysOfWeek.Sunday | DaysOfWeek.Monday | DaysOfWeek.Tuesday | DaysOfWeek.Wednesday | DaysOfWeek.Thursday | DaysOfWeek.Friday | DaysOfWeek.Saturday); this.timeZone = ExTimeZone.CurrentTimeZone; } this.CalculateWorkDayInconvenience(); }
public async Task SaveWorkingPeriodAsync(WorkingPeriodFilter filter, long spentTime) { var savedTime = await workingPeriodsRepository.GetAsync(filter); if (savedTime != null) { savedTime.Duration += TimeSpan.FromMilliseconds(spentTime); await workingPeriodsRepository.UpdateAsync(savedTime); return; } var timeModeltoSave = new WorkingPeriod { AgentId = filter.AgentId, Date = DateTime.UtcNow.Date, Type = filter.Type, Action = filter.Action, Duration = TimeSpan.FromMilliseconds(spentTime) }; await workingPeriodsRepository.AddAsync(timeModeltoSave); }
public Task UpdateAsync(WorkingPeriod time) { workingPeriodsDataSet.Update(time); return(dbContext.SaveChangesAsync()); }
public Task AddAsync(WorkingPeriod time) { workingPeriodsDataSet.Add(time); return(dbContext.SaveChangesAsync()); }
public void StartWorking() { WorkingTime = new WorkingPeriod(); WorkingTime.StartDt = DateTime.Now; }
public DeleteWorkingPeriodRequest(WorkingPeriod workingPeriod) { WorkingPeriod = workingPeriod; }