diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj b/BeWoPlanerMobil/BeWoPlanerMobil.csproj index 254d878ee..f21cb4db4 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj @@ -5093,6 +5093,9 @@ + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) @@ -5111,7 +5114,7 @@ - False + True False 8808 / diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user index 19e97f07a..6a59e7939 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user @@ -28,7 +28,7 @@ - http://localhost/BeWoPlanerMobil + Views/Login/Index.cshtml CurrentPage True False diff --git a/BeWoPlanerMobil/Controllers/CustomerController.cs b/BeWoPlanerMobil/Controllers/CustomerController.cs index 61921e927..5120670c5 100644 --- a/BeWoPlanerMobil/Controllers/CustomerController.cs +++ b/BeWoPlanerMobil/Controllers/CustomerController.cs @@ -488,7 +488,6 @@ namespace BeWoPlanerMobil.Controllers #region Abwesenheiten - // ToDo: Zu CreateOrUpdateAbsenceTime umbauen! [Authorize] [HttpPost] public ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection) @@ -496,8 +495,6 @@ namespace BeWoPlanerMobil.Controllers var selectedAbsenceTime = Model.SelectedAbsenceTime; var oid = selectedAbsenceTime?.AbsenceTimeOid; - - var isNew = oid is null; var startDateString = formCollection["customer-absence-time-start-date"]; @@ -506,6 +503,13 @@ namespace BeWoPlanerMobil.Controllers var endTimeString = formCollection["customer-absence-time-end-time"]; var category = formCollection["customer-absence-time-category"]; var notice = formCollection["customer-absence-time-notice"]; + var allDay = "on" == formCollection["customer-absence-time-allday-cb"]; + + if(allDay) + { + startTimeString = null; + endTimeString = null; + } var startString = $"{startDateString} {startTimeString ?? "00:00"}"; var endString = $"{endDateString} {endTimeString ?? "00:00"}"; @@ -524,18 +528,18 @@ namespace BeWoPlanerMobil.Controllers var absenceTime = new AbsenceTimeDC { CustomerOid = customer.CustomerOid, - Reason = absenceReason, - Start = start, - End = end, - Notice = notice + Reason = absenceReason, + Start = start, + End = end, + Notice = notice }; OperationsService.InsertNewCustomerAbsenceTime(customer.CustomerOid.Value, absenceTime); } else { - selectedAbsenceTime.Start = start; - selectedAbsenceTime.End = end; + selectedAbsenceTime.Start = start; + selectedAbsenceTime.End = end; selectedAbsenceTime.Reason = absenceReason; selectedAbsenceTime.Notice = notice; @@ -550,35 +554,15 @@ namespace BeWoPlanerMobil.Controllers return RedirectToActionPermanent("Customer", new { id = customer.CustomerOid }); } - [Authorize] - [HttpPost] - public ActionResult DeleteAbsenceTime(FormCollection formCollection) - { - var customer = Model.SelectedCustomer; - - var isParsingSuccessful = long.TryParse(formCollection["customer-absence-time-to-delete-oid"], out var absenceTimeOid); - - if(isParsingSuccessful) - { - var absenceTime2Delete = customer.AbsenceTimes.FirstOrDefault(at => at.AbsenceTimeOid.HasValue && at.AbsenceTimeOid.Value.Equals(absenceTimeOid)); - - if(!(absenceTime2Delete is null)) - { - customer.AbsenceTimes.Remove(absenceTime2Delete); - - CustomerService.UpdateCustomer(customer); - } - } - - return RedirectToActionPermanent("Customer", new { id = customer?.CustomerOid }); - } - - // ToDo: Fehlermeldungen einbauen! - [Authorize] [HttpPost] public ActionResult SelectAbsenceTime(long absenceTimeOid) { + if(Model is null) + { + return Logout(); + } + if(absenceTimeOid == 0) { return RedirectToActionPermanent("Customer", Model); @@ -630,6 +614,27 @@ namespace BeWoPlanerMobil.Controllers return LeerzeichenFuerGetMethoden; } + + [Authorize] + public ActionResult DeleteAbsenceTime(long absenceTimeOid) + { + var absenceTime2Delete = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Equals(absenceTimeOid)); + + if(absenceTime2Delete is null) + { + ViewData["AbsenceTimeError"] = "Beim Löschen der Abwesenheit ist ein Fehler aufgetreten!

Bitte wenden Sie sich an Ihren Administrator."; + } + + var customer = Model.SelectedCustomer; + + customer.AbsenceTimes.Remove(absenceTime2Delete); + + CustomerService.UpdateCustomer(customer); + + LoadCustomerToModel(customer.CustomerOid); + + return PartialView("CustomerAbsenceTimePartial", Model); + } #endregion } diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index badd234af..3f4b3b344 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -2629,7 +2629,6 @@ namespace BeWoPlanerMobil.Controllers { if(Model?.SelectedSupportConcept?.Customer?.Oid.HasValue ?? false) { - //return RedirectToActionPermanent("PreselectCustomer", "Customer", new {Model.SelectedSupportConcept.Customer.CustomerOid}); return RedirectToActionPermanent("Customer", "Customer", new { id = Model.SelectedSupportConcept.Customer.Oid }); } diff --git a/BeWoPlanerMobil/Controllers/ReportController.cs b/BeWoPlanerMobil/Controllers/ReportController.cs index b63342419..2d5b6019e 100644 --- a/BeWoPlanerMobil/Controllers/ReportController.cs +++ b/BeWoPlanerMobil/Controllers/ReportController.cs @@ -10,7 +10,6 @@ using BS.Shared.DataContracts; using BS.Shared.Extensions; using System; using System.Collections.Generic; -using System.Collections.Specialized; using System.Linq; using System.Text; using System.Web.Mvc; @@ -32,9 +31,9 @@ namespace BeWoPlanerMobil.Controllers return null; } - if(((ReportModel) Session[ModelSessionConstants.ReportModelKey])?.Employee == null) + if(((ReportModel) Session[ModelSessionConstants.ReportModelKey])?.Employee is null) { - _Model = new ReportModel {Employee = MobileSessionFacade.LoggedInEmployee}; + _Model = new ReportModel {Employee = MobileSessionFacade.LoggedInEmployee, ReportCreator = GetReportCreator()}; Session[ModelSessionConstants.ReportModelKey] = _Model; } else @@ -46,6 +45,18 @@ namespace BeWoPlanerMobil.Controllers } } + private static AbstractReportCreator GetReportCreator() + { + var creator = PluginLoader.FindClass(); + +#if DEBUG + creator.TempPath = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, @"demo\temp"); +#else + creator.TempPath = BS.Shared.Core.Utils.CreateSavePath(AppDomain.CurrentDomain.BaseDirectory, PluginLoader.Tenant + @"\temp"); +#endif + return creator; + } + // Veraltet, wird nicht mehr benutzt. [Authorize] public ActionResult Report() @@ -60,8 +71,6 @@ namespace BeWoPlanerMobil.Controllers return RedirectToActionPermanent("Main", "Main"); } - //CreateServiceOverview(null); - return View(Model); } @@ -110,8 +119,6 @@ namespace BeWoPlanerMobil.Controllers Model.Organisations.Sort((x, y) => x.Name.CompareTo(y.Name)); Model.AllTeams = EmployeeService.GetAllActiveCompactTeamsForEmployee(MobileSessionFacade.LoggedInEmployee.EmployeeOid); - - CreateReport(null); } catch(Exception e) { @@ -122,235 +129,234 @@ namespace BeWoPlanerMobil.Controllers } - [Authorize] - [HttpPost] - public ActionResult CreateServiceOverview(FormCollection formCollection) - { - if(Model?.Employee?.EmployeeOid is null) - { - return Logout(); - } + //[Authorize] + //[HttpPost] + //public ActionResult CreateServiceOverview(FormCollection formCollection) + //{ + // if(Model?.Employee?.EmployeeOid is null) + // { + // return Logout(); + // } - if(Model.SelectedFilterItem is null) - { - return RedirectToActionPermanent("Report"); - } + // if(Model.SelectedFilterItem is null) + // { + // return RedirectToActionPermanent("Report"); + // } - CreateReport(formCollection); + // CreateReport(formCollection); - return RedirectToActionPermanent("Report"); - } + // return RedirectToActionPermanent("Report"); + //} - [Authorize] - private void CreateReport(NameValueCollection formCollection) - { - if(Model.SelectedFilterItem?.FilterEnum == QBFilterEnum.KlientenAuswahl) - { - var customerOidString = formCollection == null ? Model.SelectedCustomerOid.ToString() : formCollection[FormCollectionConstants.SelectedCustomerOidKey]; + //[Authorize] + //private void CreateReport(NameValueCollection formCollection) + //{ + // if(Model.SelectedFilterItem?.FilterEnum == QBFilterEnum.KlientenAuswahl) + // { + // var customerOidString = formCollection is null ? Model.SelectedCustomerOid.ToString() : formCollection[FormCollectionConstants.SelectedCustomerOidKey]; - var isCustomerOidSuccessful = long.TryParse(customerOidString, out var selectedCustomerOid); + // var isCustomerOidSuccessful = long.TryParse(customerOidString, out var selectedCustomerOid); - if(isCustomerOidSuccessful) - { - var selectedCustomer = Model.Customers.FirstOrDefault(customer => customer.CustomerOid == selectedCustomerOid); + // if(isCustomerOidSuccessful) + // { + // var selectedCustomer = Model.Customers.FirstOrDefault(customer => customer.CustomerOid == selectedCustomerOid); - Model.SelectedCustomer = selectedCustomer; - } - } - else - { - Model.SelectedCustomer = null; - } + // Model.SelectedCustomer = selectedCustomer; + // } + // } + // else + // { + // Model.SelectedCustomer = null; + // } - if(Model.SelectedFilterItem?.FilterEnum == QBFilterEnum.TeamAuswahl) - { - var teamOidString = formCollection == null ? Model.SelectedTeamOid.ToString() : formCollection[FormCollectionConstants.SelectedTeamOidKey]; + // if(Model.SelectedFilterItem?.FilterEnum == QBFilterEnum.TeamAuswahl) + // { + // var teamOidString = formCollection is null ? Model.SelectedTeamOid.ToString() : formCollection[FormCollectionConstants.SelectedTeamOidKey]; - var isTeamOidSuccessful = long.TryParse(teamOidString, out var selectedTeamOid); + // var isTeamOidSuccessful = long.TryParse(teamOidString, out var selectedTeamOid); - if(isTeamOidSuccessful) - { - var selectedTeam = Model.AllTeams.FirstOrDefault(team => team.TeamOid == selectedTeamOid); + // if(isTeamOidSuccessful) + // { + // var selectedTeam = Model.AllTeams.FirstOrDefault(team => team.TeamOid == selectedTeamOid); - Model.SelectedTeam = selectedTeam; - } - } - else - { - Model.SelectedTeam = null; - } + // Model.SelectedTeam = selectedTeam; + // } + // } + // else + // { + // Model.SelectedTeam = null; + // } - // Datumsangaben laden in separater Methode - var reportTimeFrame = GetReportTimeFrame(); + // var reportTimeFrame = GetReportTimeFrame(); - var reportObjects = new List(); + // var reportObjects = new List(); - var organisationOid = Model.SelectedOrganisationOid ?? 0; - var employeeOid = Model.SelectedEmployeeOid ?? 0; - var serviceCategoryOid = Model.SelectedServiceCategoryOid; - var teamOid = Model.SelectedTeamOid; - var customerOid = Model.SelectedCustomerOid ?? 0; + // var organisationOid = Model.SelectedOrganisationOid ?? 0; + // var employeeOid = Model.SelectedEmployeeOid ?? 0; + // var serviceCategoryOid = Model.SelectedServiceCategoryOid; + // var teamOid = Model.SelectedTeamOid; + // var customerOid = Model.SelectedCustomerOid ?? 0; - var creator = PluginLoader.FindClass() ?? new DefaultReportCreator(); + // var creator = PluginLoader.FindClass() ?? new DefaultReportCreator(); - switch(Model.SelectedFilterItem?.FilterEnum) - { - case QBFilterEnum.AlleKlienten: - reportObjects = ServicesOverviewRO.Create(reportTimeFrame.Month, reportTimeFrame.Year, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid); - break; - case QBFilterEnum.NurKlientenMeinesTeams: - var teamRelatedCustomerOids = creator.GetKlientenOidsMeinesTeams(null); - reportObjects.AddRange(teamRelatedCustomerOids.Select(cOid => ServicesOverviewRO.Create(cOid, reportTimeFrame.Month, reportTimeFrame.Year, true, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid))); - break; - case QBFilterEnum.MeineKlienten: - var myRelatedCustomerOids = creator.GetMeineKlientenOids(); - reportObjects.AddRange(myRelatedCustomerOids.Select(cOid => ServicesOverviewRO.Create(cOid, reportTimeFrame.Month, reportTimeFrame.Year, true, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid))); - break; - case QBFilterEnum.KlientenAuswahl: - reportObjects = new List { ServicesOverviewRO.Create(customerOid, reportTimeFrame.Month, reportTimeFrame.Year, false, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid) }; - break; - case QBFilterEnum.TeamAuswahl: - var customerOids = creator.GetKlientenOidsMeinesTeams(teamOid); - reportObjects.AddRange(customerOids.Select(cOid => ServicesOverviewRO.Create(cOid, reportTimeFrame.Month, reportTimeFrame.Year, true, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid))); - break; - default: - reportObjects = ServicesOverviewRO.Create(reportTimeFrame.Month, reportTimeFrame.Year, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid, true, false); - break; - } + // switch(Model.SelectedFilterItem?.FilterEnum) + // { + // case QBFilterEnum.AlleKlienten: + // reportObjects = ServicesOverviewRO.Create(reportTimeFrame.Month, reportTimeFrame.Year, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid); + // break; + // case QBFilterEnum.NurKlientenMeinesTeams: + // var teamRelatedCustomerOids = creator.GetKlientenOidsMeinesTeams(null); + // reportObjects.AddRange(teamRelatedCustomerOids.Select(cOid => ServicesOverviewRO.Create(cOid, reportTimeFrame.Month, reportTimeFrame.Year, true, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid))); + // break; + // case QBFilterEnum.MeineKlienten: + // var myRelatedCustomerOids = creator.GetMeineKlientenOids(); + // reportObjects.AddRange(myRelatedCustomerOids.Select(cOid => ServicesOverviewRO.Create(cOid, reportTimeFrame.Month, reportTimeFrame.Year, true, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid))); + // break; + // case QBFilterEnum.KlientenAuswahl: + // reportObjects = new List { ServicesOverviewRO.Create(customerOid, reportTimeFrame.Month, reportTimeFrame.Year, false, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid) }; + // break; + // case QBFilterEnum.TeamAuswahl: + // var customerOids = creator.GetKlientenOidsMeinesTeams(teamOid); + // reportObjects.AddRange(customerOids.Select(cOid => ServicesOverviewRO.Create(cOid, reportTimeFrame.Month, reportTimeFrame.Year, true, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid))); + // break; + // default: + // reportObjects = ServicesOverviewRO.Create(reportTimeFrame.Month, reportTimeFrame.Year, organisationOid, employeeOid, reportTimeFrame.StartDay, reportTimeFrame.EndDay, serviceCategoryOid, true, false); + // break; + // } - reportObjects = reportObjects.Where(x => x != null).ToList(); + // reportObjects = reportObjects.Where(x => x != null).ToList(); - var srOids = new List(); + // var srOids = new List(); - reportObjects.DoForEach(x => x.Services.DoForEach(s => srOids.AddIfNotIn(s.ServiceRecordOid))); + // reportObjects.DoForEach(x => x.Services.DoForEach(s => srOids.AddIfNotIn(s.ServiceRecordOid))); - Model.ConfirmationReceiptSignatures = OperationsService.LoadAllConfirmationReceiptSignaturesByServiceRecordOids(srOids, out var serviceRecordOidsWithSignature); + // Model.ConfirmationReceiptSignatures = OperationsService.LoadAllConfirmationReceiptSignaturesByServiceRecordOids(srOids, out var serviceRecordOidsWithSignature); - var customerSignatures = Model.ConfirmationReceiptSignatures.Where(crs => crs.SignatureType == SignatureType.Customer).ToList(); - var employeeSignatures = Model.ConfirmationReceiptSignatures.Where(crs => crs.SignatureType == SignatureType.Employee).ToList(); + // var customerSignatures = Model.ConfirmationReceiptSignatures.Where(crs => crs.SignatureType == SignatureType.Customer).ToList(); + // var employeeSignatures = Model.ConfirmationReceiptSignatures.Where(crs => crs.SignatureType == SignatureType.Employee).ToList(); - Model.ReportServiceRecordOids = new List(); - reportObjects.DoForEach(ro => ro.Services.DoForEach(s => - { - Model.ReportServiceRecordOids.AddIfNotIn(s.ServiceRecordOid); - })); + // Model.ReportServiceRecordOids = new List(); + // reportObjects.DoForEach(ro => ro.Services.DoForEach(s => + // { + // Model.ReportServiceRecordOids.AddIfNotIn(s.ServiceRecordOid); + // })); - var hasEmployeeSignature = srOids.All( - a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee) && - serviceRecordOidsWithSignature[SignatureType.Employee].Contains(a)); + // var hasEmployeeSignature = srOids.All( + // a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee) && + // serviceRecordOidsWithSignature[SignatureType.Employee].Contains(a)); - var anyEmployeeSignatures = srOids.Any(a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee) && - serviceRecordOidsWithSignature[SignatureType.Employee].Contains(a)); + // var anyEmployeeSignatures = srOids.Any(a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee) && + // serviceRecordOidsWithSignature[SignatureType.Employee].Contains(a)); - var employeeSignatureState = SignatureState.None; + // var employeeSignatureState = SignatureState.None; - if(anyEmployeeSignatures) - { - employeeSignatureState = SignatureState.Some; - } + // if(anyEmployeeSignatures) + // { + // employeeSignatureState = SignatureState.Some; + // } - if(hasEmployeeSignature) - { - employeeSignatureState = SignatureState.All; - } + // if(hasEmployeeSignature) + // { + // employeeSignatureState = SignatureState.All; + // } - Model.ConfirmationReceiptObject = null; - Model.ConfirmationReceiptObject = new ConfirmationReceiptObject( - BuildInformationString(), - new List(), - BuildInformationString(true), - GetTimeSpanString(), - hasEmployeeSignature, - employeeSignatures.ToList(), - employeeSignatureState); + // Model.ConfirmationReceiptObject = null; + // Model.ConfirmationReceiptObject = new ConfirmationReceiptObject( + // BuildInformationString(), + // new List(), + // BuildInformationString(true), + // GetTimeSpanString(), + // hasEmployeeSignature, + // employeeSignatures.ToList(), + // employeeSignatureState); - reportObjects.DoForEach(reportObject => - { - var quittierungsbelegItems = new List(); + // reportObjects.DoForEach(reportObject => + // { + // var quittierungsbelegItems = new List(); - reportObject.Services.DoForEach(serviceDetail => - { - quittierungsbelegItems.Add(new QuittierungsbelegItem(serviceDetail)); - }); + // reportObject.Services.DoForEach(serviceDetail => + // { + // quittierungsbelegItems.Add(new QuittierungsbelegItem(serviceDetail)); + // }); - if(quittierungsbelegItems.Count == 0) - { - return; - } + // if(quittierungsbelegItems.Count == 0) + // { + // return; + // } - var oids = quittierungsbelegItems.Select(s => s.ServiceRecordOid).ToList(); + // var oids = quittierungsbelegItems.Select(s => s.ServiceRecordOid).ToList(); - var hasCustomerSignature = oids.All(a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Customer) && - serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a)); + // var hasCustomerSignature = oids.All(a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Customer) && + // serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a)); - var employeeSignatureState2 = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Employee); + // var employeeSignatureState2 = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Employee); - var customerSignatureState = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Customer); + // var customerSignatureState = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Customer); - var customerSignatureOid = hasCustomerSignature ? customerSignatures.FirstOrDefault(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value)))?.ConfirmationReceiptSignatureOid : null; - var sigs = customerSignatures.Where(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value))).ToList(); + // var customerSignatureOid = hasCustomerSignature ? customerSignatures.FirstOrDefault(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value)))?.ConfirmationReceiptSignatureOid : null; + // var sigs = customerSignatures.Where(cs => cs.ServiceRecords.All(a => a.Customer.CustomerOid.Equals(reportObject.CustomerOid) && a.ServiceRecordOid.HasValue && serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a.ServiceRecordOid.Value))).ToList(); - var customerSignatureOids = sigs.Where(signature => signature.ConfirmationReceiptSignatureOid.HasValue).Select(signature => signature.ConfirmationReceiptSignatureOid.Value).ToList(); + // var customerSignatureOids = sigs.Where(signature => signature.ConfirmationReceiptSignatureOid.HasValue).Select(signature => signature.ConfirmationReceiptSignatureOid.Value).ToList(); - var employeeSignatureOids = new List(); + // var employeeSignatureOids = new List(); - if(serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee)) - { - foreach(var signature in employeeSignatures.Where(s => s.ConfirmationReceiptSignatureOid.HasValue)) - { - foreach(var serviceRecord in signature.ServiceRecords) - { - var oid = serviceRecord.ServiceRecordOid; + // if(serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee)) + // { + // foreach(var signature in employeeSignatures.Where(s => s.ConfirmationReceiptSignatureOid.HasValue)) + // { + // foreach(var serviceRecord in signature.ServiceRecords) + // { + // var oid = serviceRecord.ServiceRecordOid; - if(oid.HasValue && oids.Contains(oid.Value)) - { - employeeSignatureOids.AddIfNotIn(signature.ConfirmationReceiptSignatureOid.Value); - } - } - } - } + // if(oid.HasValue && oids.Contains(oid.Value)) + // { + // employeeSignatureOids.AddIfNotIn(signature.ConfirmationReceiptSignatureOid.Value); + // } + // } + // } + // } - var customerSignatureServiceRecordOids = new List(); - var employeeSignatureServiceRecordOids = new List(); - if(serviceRecordOidsWithSignature.ContainsKey(SignatureType.Customer)) - { - customerSignatureServiceRecordOids = serviceRecordOidsWithSignature[SignatureType.Customer]; - } + // var customerSignatureServiceRecordOids = new List(); + // var employeeSignatureServiceRecordOids = new List(); + // if(serviceRecordOidsWithSignature.ContainsKey(SignatureType.Customer)) + // { + // customerSignatureServiceRecordOids = serviceRecordOidsWithSignature[SignatureType.Customer]; + // } - if(serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee)) - { - employeeSignatureServiceRecordOids = serviceRecordOidsWithSignature[SignatureType.Employee]; - } + // if(serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee)) + // { + // employeeSignatureServiceRecordOids = serviceRecordOidsWithSignature[SignatureType.Employee]; + // } - foreach(var quittierungsbelegItem in quittierungsbelegItems) - { - var serviceRecordOid = quittierungsbelegItem.ServiceRecordOid; + // foreach(var quittierungsbelegItem in quittierungsbelegItems) + // { + // var serviceRecordOid = quittierungsbelegItem.ServiceRecordOid; - quittierungsbelegItem.HasCustomerSignature = customerSignatureServiceRecordOids.Contains(serviceRecordOid); - quittierungsbelegItem.HasEmployeeSignature = employeeSignatureServiceRecordOids.Contains(serviceRecordOid); - } + // quittierungsbelegItem.HasCustomerSignature = customerSignatureServiceRecordOids.Contains(serviceRecordOid); + // quittierungsbelegItem.HasEmployeeSignature = employeeSignatureServiceRecordOids.Contains(serviceRecordOid); + // } - Model.ConfirmationReceiptObject.ConfirmationReceiptResultList.Add( - item: new QuittierungsbelegResult - ( - $"{reportObject.CustomerLastName}, {reportObject.CustomerFirstName}", - quittierungsbelegItems, - reportObject.CustomerOid, - hasCustomerSignature, - customerSignatureOid, - customerSignatureState, - customerSignatureOids, - employeeSignatureState2, - employeeSignatureOids - ) - ); - }); + // Model.ConfirmationReceiptObject.ConfirmationReceiptResultList.Add( + // item: new QuittierungsbelegResult + // ( + // $"{reportObject.CustomerLastName}, {reportObject.CustomerFirstName}", + // quittierungsbelegItems, + // reportObject.CustomerOid, + // hasCustomerSignature, + // customerSignatureOid, + // customerSignatureState, + // customerSignatureOids, + // employeeSignatureState2, + // employeeSignatureOids + // ) + // ); + // }); - if(Model.ConfirmationReceiptObject.ConfirmationReceiptResultList.All(qbItem => qbItem.Items.Count == 0)) - { - TempData["HasWarningMessage"] = true; - } - } + // if(Model.ConfirmationReceiptObject.ConfirmationReceiptResultList.All(qbItem => qbItem.Items.Count == 0)) + // { + // TempData["HasWarningMessage"] = true; + // } + //} /// /// Ermittelt den Unterschriftenstatus, der besagt, ob für alle ausgewählten Zeiterfassungseinträge eine Unterschrift existiert. @@ -361,11 +367,15 @@ namespace BeWoPlanerMobil.Controllers /// private static SignatureState GetSignatureState(List oids, Dictionary> serviceRecordOidsWithSignature, SignatureType signatureType) { - var hasSignatures = oids.All(a => serviceRecordOidsWithSignature.ContainsKey(signatureType) && - serviceRecordOidsWithSignature[signatureType].Contains(a)); + //var hasSignatures = oids.All(a => serviceRecordOidsWithSignature.ContainsKey(signatureType) && + // serviceRecordOidsWithSignature[signatureType].Contains(a)); - var hasSomeSignatures = oids.Any(a => serviceRecordOidsWithSignature.ContainsKey(signatureType) && - serviceRecordOidsWithSignature[signatureType].Contains(a)); + //var hasSomeSignatures = oids.Any(a => serviceRecordOidsWithSignature.ContainsKey(signatureType) && + // serviceRecordOidsWithSignature[signatureType].Contains(a)); + + var hasSignatures = oids.All(signatureOid => serviceRecordOidsWithSignature.ContainsValueAtKey(signatureType, signatureOid)); + + var hasSomeSignatures = oids.Any(signatureOid => serviceRecordOidsWithSignature.ContainsValueAtKey(signatureType, signatureOid)); if(hasSignatures) { @@ -692,6 +702,12 @@ namespace BeWoPlanerMobil.Controllers foreach(var csr in existingServiceRecordSignatures) { var temp = csr.ServiceRecords.Where(sr => sr.ServiceRecordOid.HasValue && !serviceRecordOidsWithSignature.Contains(sr.ServiceRecordOid.Value)); + + if(!AbstractModel.HasRightToProvideEmployeeSignatureForOthers) + { + temp = temp.Where(sr => sr.Employee.Equals(MobileSessionFacade.LoggedInCompactEmployee)); + } + csr.ServiceRecords.Clear(); csr.ServiceRecords.AddRangeIfElementsNotIn(temp); @@ -716,9 +732,20 @@ namespace BeWoPlanerMobil.Controllers timeSpanString = timeSpanString.Substring(4); } + var filteredServiceRecords = new List(); + + if(!isCustomerSig && !AbstractModel.HasRightToProvideEmployeeSignatureForOthers) + { + filteredServiceRecords = serviceRecords.Where(sr => sr.Employee.Equals(MobileSessionFacade.LoggedInCompactEmployee)).ToList(); + } + else + { + filteredServiceRecords = serviceRecords; + } + var confirmationReceiptSignature = new ConfirmationReceiptSignatureDC { - ServiceRecords = serviceRecords, + ServiceRecords = filteredServiceRecords, CustomerOid = isCustomerSig ? (long?) customerOid : null, Employee = isCustomerSig ? null : MobileSessionFacade.LoggedInCompactEmployee, SignatureImage = base64SignatureString, @@ -779,7 +806,7 @@ namespace BeWoPlanerMobil.Controllers return result; } - foreach(var signature in dataContracts) + foreach(var signature in dataContracts.OrderBy(o => o.InsTs)) { var img = MainController.ApplyWatermark(signature.SignatureImage, Server.MapPath("../Content/images/bewoplaner_by_ownsoft_logo_mok.png")); var date = signature.InsTs?.ToString("dd.MM.yyyy HH:mm:ss") ?? "unbekannt"; @@ -812,6 +839,13 @@ namespace BeWoPlanerMobil.Controllers return RedirectToActionPermanent("Report"); } + LoadServiceOverviewToModel(); + + return PartialView("QuittierungsbelegsResultPartial", Model); + } + + private void LoadServiceOverviewToModel() + { if(Model.SelectedFilterItem.FilterEnum == QBFilterEnum.KlientenAuswahl) { var customerOidString = Model.SelectedCustomerOid.ToString(); @@ -901,13 +935,10 @@ namespace BeWoPlanerMobil.Controllers { Model.ReportServiceRecordOids.AddIfNotIn(s.ServiceRecordOid); })); + + var hasEmployeeSignature = srOids.All(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, a)); - var hasEmployeeSignature = srOids.All( - a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee) && - serviceRecordOidsWithSignature[SignatureType.Employee].Contains(a)); - - var anyEmployeeSignatures = srOids.Any(a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Employee) && - serviceRecordOidsWithSignature[SignatureType.Employee].Contains(a)); + var anyEmployeeSignatures = srOids.Any(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, a)); var employeeSignatureState = SignatureState.None; @@ -921,6 +952,22 @@ namespace BeWoPlanerMobil.Controllers employeeSignatureState = SignatureState.All; } + if(!AbstractModel.HasRightToProvideEmployeeSignatureForOthers) + { + // Prüfen, ob alle eigenen ServiceRecords unterschrieben sind + var ownServiceRecordOids = new List(); + reportObjects.DoForEach(reportObject => ownServiceRecordOids.AddRangeIfElementsNotIn(reportObject.Services.Where(serviceDetail => serviceDetail.EmployeeOid.Equals(Model.Employee.EmployeeOid)).Select(serviceDetail => serviceDetail.ServiceRecordOid))); + + // Prüfen, ob Einträge von anderen Mitarbeitern existieren + var serviceRecordOidsFromOtherEmployees = new List(); + reportObjects.DoForEach(reportObject => serviceRecordOidsFromOtherEmployees.AddRangeIfElementsNotIn(reportObject.Services.Where(serviceDetail => !serviceDetail.EmployeeOid.Equals(Model.Employee.EmployeeOid)).Select(serviceDetail => serviceDetail.ServiceRecordOid))); + + var areAllForeignEntriesSigned = serviceRecordOidsFromOtherEmployees.All(srOid => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, srOid)); + var areAllOwnEntriesSigned = ownServiceRecordOids.All(srOid => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, srOid)); + + employeeSignatureState = !areAllForeignEntriesSigned && areAllOwnEntriesSigned ? SignatureState.AllOwnServiceRecords : employeeSignatureState; + } + Model.ConfirmationReceiptObject = null; Model.ConfirmationReceiptObject = new ConfirmationReceiptObject( BuildInformationString(), @@ -948,9 +995,8 @@ namespace BeWoPlanerMobil.Controllers } var oids = quittierungsbelegItems.Select(s => s.ServiceRecordOid).ToList(); - - var hasCustomerSignature = oids.All(a => serviceRecordOidsWithSignature.ContainsKey(SignatureType.Customer) && - serviceRecordOidsWithSignature[SignatureType.Customer].Contains(a)); + + var hasCustomerSignature = oids.All(a => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Customer, a)); var employeeSignatureState2 = GetSignatureState(oids, serviceRecordOidsWithSignature, SignatureType.Employee); @@ -999,7 +1045,24 @@ namespace BeWoPlanerMobil.Controllers quittierungsbelegItem.HasEmployeeSignature = employeeSignatureServiceRecordOids.Contains(serviceRecordOid); } - confirmationReceiptResults.Add( + var employeeOids = new List(); + foreach(var serviceDetail in reportObject.Services) + { + employeeOids.AddIfNotIn(serviceDetail.EmployeeOid); + } + + if(!AbstractModel.HasRightToProvideEmployeeSignatureForOthers) + { + var serviceRecordOidsFromOtherEmployees = reportObject.Services.Where(serviceDetail => !serviceDetail.EmployeeOid.Equals(Model.Employee.EmployeeOid)).Select(serviceDetail => serviceDetail.ServiceRecordOid).ToList(); + var ownServiceRecordOids = reportObject.Services.Where(serviceDetail => serviceDetail.EmployeeOid.Equals(Model.Employee.EmployeeOid)).Select(serviceDetail => serviceDetail.ServiceRecordOid).ToList(); + + var areAllForeignEntriesSigned = serviceRecordOidsFromOtherEmployees.All(srOid => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, srOid)); + var areAllOwnEntriesSigned = ownServiceRecordOids.All(srOid => serviceRecordOidsWithSignature.ContainsValueAtKey(SignatureType.Employee, srOid)); + + employeeSignatureState2 = !areAllForeignEntriesSigned && areAllOwnEntriesSigned ? SignatureState.AllOwnServiceRecords : employeeSignatureState2; + } + + confirmationReceiptResults.Add( item: new QuittierungsbelegResult ( $"{reportObject.CustomerLastName}, {reportObject.CustomerFirstName}", @@ -1010,7 +1073,8 @@ namespace BeWoPlanerMobil.Controllers customerSignatureState, customerSignatureOids, employeeSignatureState2, - employeeSignatureOids + employeeSignatureOids, + employeeOids.Count ) ); }); @@ -1021,8 +1085,6 @@ namespace BeWoPlanerMobil.Controllers { TempData["HasWarningMessage"] = true; } - - return PartialView("QuittierungsbelegsResultPartial", Model); } /// @@ -1056,6 +1118,8 @@ namespace BeWoPlanerMobil.Controllers DeleteSignatures(info, true); } + LoadServiceOverviewToModel(); + return RedirectToActionPermanent("InitReports"); } @@ -1075,6 +1139,8 @@ namespace BeWoPlanerMobil.Controllers DeleteSignatures(info, false); } + LoadServiceOverviewToModel(); + return RedirectToActionPermanent("InitReports"); } @@ -1138,13 +1204,77 @@ namespace BeWoPlanerMobil.Controllers var customerName = obj.CustomerName; var employeeName = MobileSessionFacade.LoggedInCompactEmployee.SimpleDescription; - var serviceRecordCount = obj.Items.Count; + + var serviceRecordCount = isEmployee && AbstractModel.HasRightToProvideEmployeeSignatureForOthers ? obj.Items.Count : obj.Items.Count(x => x.EmployeeOid.Equals(Model.Employee.EmployeeOid)); var personName = isEmployee ? employeeName : customerName; Model.Quittierungsbelegsunterschriftenobjekt = new Quittierungsbelegsunterschriftenobjekt(isEmployee, personName, Model.ConfirmationReceiptObject.TimeSpanString, customerName, serviceRecordCount, obj.CustomerOid); return PartialView("ConfirmationReceiptSignaturePartial", Model); } + + [Authorize] + public ActionResult LoadReportToModel() + { + var month = Model.SelectedMonth ?? DateTime.Now.AddMonths(-1).Month; + var year = Model.SelectedYear ?? DateTime.Now.Year; + var customerOid = Model.SelectedCustomerOid; + var teamOid = Model.SelectedTeamOid; + var employeeOid = Model.SelectedEmployeeOid; + var organisationOid = Model.SelectedOrganisationOid; + var serviceCategoryOid = Model.SelectedServiceCategoryOid; + var startDate = Model.SelectedStartDay ?? 1; + + var date = new DateTime(year, month, startDate); + + var endDate = Model.SelectedEndDay ?? date.GetLastOfMonth().Day; + var filterType = Model.SelectedFilterItem; + + Model.QuittierungsbelegsReportObject = Model.ReportCreator.CreateServiceOverviewReportNew(month, year, filterType.FilterEnum, customerOid, teamOid, employeeOid, organisationOid, serviceCategoryOid, startDate, endDate, false); + + return PartialView("QuittierungsbelegsPreviewPartial", Model); + } + + [Authorize] + public string ResetQuittierungsbeleg() + { + Model.QuittierungsbelegsReportObject = null; + + return LeerzeichenFuerGetMethoden; + } + + [Authorize] + [HttpPost] + public ActionResult LoadQuittierungsbeleg() + { + if(Model is null) + { + return Logout(); + } + + var month = Model.SelectedMonth ?? DateTime.Now.AddMonths(-1).Month; + var year = Model.SelectedYear ?? DateTime.Now.Year; + var customerOid = Model.SelectedCustomerOid; + var teamOid = Model.SelectedTeamOid; + var employeeOid = Model.SelectedEmployeeOid; + var organisationOid = Model.SelectedOrganisationOid; + var serviceCategoryOid = Model.SelectedServiceCategoryOid; + var startDate = Model.SelectedStartDay ?? 1; + + var date = new DateTime(year, month, startDate); + + var endDate = Model.SelectedEndDay ?? date.GetLastOfMonth().Day; + var filterType = Model.SelectedFilterItem; + + Model.QuittierungsbelegsReportObject = Model.ReportCreator.CreateServiceOverviewReportNew(month, year, filterType.FilterEnum, customerOid, teamOid, employeeOid, organisationOid, serviceCategoryOid, startDate, endDate, false); + + //var employeeOid = Model.Employee.EmployeeOid; + //var report = Model.ReportCreator.CreateEmployeeHourReport(employeeOid, null, new DateTime(2023, 10, 1), new DateTime(2023, 10, 31), 0); + + //Model.QuittierungsbelegsReportObject = report; + + return RedirectToActionPermanent("InitReports"); + } } public class ConfirmationReceiptSignatureObject diff --git a/BeWoPlanerMobil/Controllers/ReportViewerController.cs b/BeWoPlanerMobil/Controllers/ReportViewerController.cs index 706a24e96..fe6c0bc4f 100644 --- a/BeWoPlanerMobil/Controllers/ReportViewerController.cs +++ b/BeWoPlanerMobil/Controllers/ReportViewerController.cs @@ -283,7 +283,7 @@ namespace BeWoPlanerMobil.Controllers return PartialView("DocumentWebViewerPartial", Model); } - private AbstractReportCreator GetReportCreator() + private static AbstractReportCreator GetReportCreator() { var creator = PluginLoader.FindClass(); diff --git a/BeWoPlanerMobil/Models/AbstractModel.cs b/BeWoPlanerMobil/Models/AbstractModel.cs index 6e13d258f..a2d77034a 100644 --- a/BeWoPlanerMobil/Models/AbstractModel.cs +++ b/BeWoPlanerMobil/Models/AbstractModel.cs @@ -206,5 +206,7 @@ namespace BeWoPlanerMobil.Models public static bool HasRightToEditCustomerBargeldkassen => CheckRight(UserRightType.BargeldverwaltungBearbeiten); public static bool HasRightToViewCustomerAbsenceTimes => CheckRight(UserRightType.Customer_ViewAbsenceTimes); + + public static bool HasRightToProvideEmployeeSignatureForOthers => CheckRight(UserRightType.Signature_ProvideMonthlySignatureByProxy); } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/CustomerModel.cs b/BeWoPlanerMobil/Models/CustomerModel.cs index 517998ad3..039113d7b 100644 --- a/BeWoPlanerMobil/Models/CustomerModel.cs +++ b/BeWoPlanerMobil/Models/CustomerModel.cs @@ -10,7 +10,6 @@ using BeWoPlanerMobil.Util; using BS.Shared; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; -using DevExpress.XtraPrinting.Native; using DevExpress.XtraReports.UI; namespace BeWoPlanerMobil.Models diff --git a/BeWoPlanerMobil/Models/ReportModel.cs b/BeWoPlanerMobil/Models/ReportModel.cs index 410c8a080..b7be692f3 100644 --- a/BeWoPlanerMobil/Models/ReportModel.cs +++ b/BeWoPlanerMobil/Models/ReportModel.cs @@ -3,12 +3,14 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web.Mvc; +using BeWo.Report; using BeWoPlanerMobil.Controllers; using BeWoPlanerMobil.Util.ReportUtils; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; +using DevExpress.XtraReports.UI; namespace BeWoPlanerMobil.Models { @@ -281,5 +283,9 @@ namespace BeWoPlanerMobil.Models public List SelectedConfirmationReceiptSignatures { get; set; } public Quittierungsbelegsunterschriftenobjekt Quittierungsbelegsunterschriftenobjekt { get; set; } + + public AbstractReportCreator ReportCreator { get; set; } + + public XtraReport QuittierungsbelegsReportObject { get; set; } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js index 72248a5eb..cb87b1200 100644 --- a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js +++ b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js @@ -34,6 +34,12 @@ function showMessagePopupWithHtml(title, messageAsHtml) { $("#modal-body").html(messageAsHtml); + $("#message-popup-ok-btn").off("click"); + + $("#message-popup-ok-btn").on("click", function () { + $("#messagePopup").modal("hide"); + }); + $("#messagePopup").modal( { backdrop: "static", @@ -282,8 +288,6 @@ function cardHeaderClick2(element, callback) { return; } - logInfo("card header geklickt"); - var jQElement = $(element); var icon = jQElement.find("svg.chevron-identifier-class"); diff --git a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/view-scripts/report.js b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/view-scripts/report.js index afb3b256c..1e82684ff 100644 --- a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/view-scripts/report.js +++ b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/view-scripts/report.js @@ -130,50 +130,6 @@ function onCustomerSelectionChange() { }); } -// Lädt die bisher geleisteten Unterschriften -//function getSignatures(signatureOidStrings, containerId) { -// alert("löschen?"); -// logInfo3("Lade vorhandene Unterschriften für Container '" + containerId + "' mit veralteter Methode"); -// try { -// showSpinner(); - -// var container = $(containerId); -// container.html(""); - -// $.get(getLoadConfirmationReceiptSignaturesUrl(), { oidsAsString: signatureOidStrings }).done(function(json) { -// if(isUndefinedOrNull(json) || !checkJson(json)) { -// if(!checkJson(json)) { -// hideSpinner(); -// } -// } - -// if(isEmptyOrSpaces(json)) { -// hideSpinner(); -// return; -// } - -// var signatureList = $.parseJSON(json); - -// var newHtml = ""; - -// $.each(signatureList, function(index, signature) { -// newHtml += -// '
' + -// '
' + -// "
Unterschrift vom " + signature.InsTsStr + "
" + -// '' + -// "
" + -// "
"; -// }); - -// container.append(newHtml); -// hideSpinner(); -// }); -// } catch(error) { -// showErrorPopup(error); -// } -//} - function cancelSignature(canSign, signaturePad, canvasId, signatureContainer, overridingAlertId) { try { if (canSign === false) { @@ -223,61 +179,7 @@ function hideSignatureContainer(signatureContainer, overridingAlertId) { $("#report-form-container").show(); } -//function showSignaturePad(overwrite, signatureOidsString, canSign, cardBodyId, customerOid, numberOfEntries, customerName, timeSpan, isEmployeeSignature, employeeName) { -// try { -// alert("Kann das gelöscht werden?"); -// cardHeaderButtonClick(cardBodyId); - -// $("#report-form-container").hide(); -// $("#report-signature-container-div").addClass("d-block"); - -// var plural = ""; -// if(!isEmptyOrSpaces(signatureOidsString) && signatureOidsString.includes(",")) { -// plural = "en"; -// } - -// var entryCount = parseInt(numberOfEntries, 10); - -// var leistungPlural = entryCount > 1 ? "en" : ""; - -// var signatureGiverName = isEmployeeSignature ? employeeName : customerName; - -// $("#report-info-column-h4").html("Unterschrift" + plural + " von " + signatureGiverName + " für " + numberOfEntries + " erbrachte Leistung" + leistungPlural + " von " + customerName + " (" + timeSpan + ")"); - -// if(overwrite) { -// $("#overwriting-signature-alert").addClass("d-block"); -// } - -// getSignatures(signatureOidsString, "#signature-container-div"); - -// hideSigningParts(canSign); - -// resizeCanvas("#report-sketch-pad-canvas", "#report-canvas-row-div"); - -// var canvas = document.getElementById("report-sketch-pad-canvas"); - -// var signaturePad = new SignaturePad(canvas, { backgroundColor: "rgba(255, 255, 255, 0)" }); - -// var cancelButton = document.getElementById("cancel-report-signature-button"); -// var saveButton = document.getElementById("save-report-signature-button"); -// var clearButton = document.getElementById("clear-report-canvas-button"); - -// cancelButton.addEventListener("click", function() { -// cancelSignature(canSign, signaturePad, "report-sketch-pad-canvas", "report-signature-container-div", "overwriting-signature-alert"); -// }); - -// saveButton.addEventListener("click", function() { -// saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad, "report-sketch-pad-canvas"); -// }); - -// clearButton.addEventListener("click", function() { -// signaturePad.clear(); -// }); -// } catch(error) { -// showErrorPopup(error); -// } -//} - +// ToDo: Löschen. An andere Stelle verlegt! function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad, canvasId) { try { var canvas = document.getElementById(canvasId); @@ -287,9 +189,6 @@ function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad var context = trimmedCanvas.getContext("2d"); context.globalCompositeOperation = "destination-over"; context.fillStyle = "white"; - - logInfo3(trimmedCanvas.width + " x " + trimmedCanvas.height); - context.fillRect(0, 0, trimmedCanvas.width, trimmedCanvas.height); var dataUrl = trimmedCanvas.toDataURL("image/png"); @@ -306,6 +205,7 @@ function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad "Die Unterschrift wurde erfolgreich gespeichert.

Verändern Sie jedoch Einträge der Zeiterfassung in dem ausgewählten Zeitraum, muss die Unterschrift erneut geleistet werden.", false, function () { showSpinner(); + // ToDo: Seite neuladen und Quittierungsbelegsobjekt neuerstellen! location.reload(); }, true); diff --git a/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs b/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs index 6e30e14cf..be10ca42b 100644 --- a/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs +++ b/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs @@ -23,8 +23,11 @@ namespace BeWoPlanerMobil.Util public bool HasEmployeeSignature { get; set; } + public long EmployeeOid { get; set; } + public QuittierungsbelegItem(ServicesOverviewRO.ServiceDetail serviceDetail) { + EmployeeOid = serviceDetail.EmployeeOid; Kontaktart = serviceDetail.IsGroup ? "GR" : "E"; CustomersCount = serviceDetail.CustomerCount; Minutes = serviceDetail.Minutes; diff --git a/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs b/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs index 9cdbe912a..8cc68de3b 100644 --- a/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs +++ b/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs @@ -27,7 +27,9 @@ namespace BeWoPlanerMobil.Util public List EmployeeSignatureOids { get; } - public QuittierungsbelegResult(string customerName, List items, long customerOid, bool hasCustomerSignature, long? customerSignatureOid, SignatureState customerSignatureStatus, List customerSignatureOids, SignatureState employeeSignatureState, List employeeSignatureOids) + public int EmployeeCount { get; } + + public QuittierungsbelegResult(string customerName, List items, long customerOid, bool hasCustomerSignature, long? customerSignatureOid, SignatureState customerSignatureStatus, List customerSignatureOids, SignatureState employeeSignatureState, List employeeSignatureOids, int employeeCount) { CustomerName = customerName; Items = items; @@ -39,6 +41,7 @@ namespace BeWoPlanerMobil.Util CustomerSignatureOids = customerSignatureOids; EmployeeSignatureState = employeeSignatureState; EmployeeSignatureOids = employeeSignatureOids; + EmployeeCount = employeeCount; } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Util/ReportUtils/ConfirmationReceiptObject.cs b/BeWoPlanerMobil/Util/ReportUtils/ConfirmationReceiptObject.cs index 52d265b37..e101b0752 100644 --- a/BeWoPlanerMobil/Util/ReportUtils/ConfirmationReceiptObject.cs +++ b/BeWoPlanerMobil/Util/ReportUtils/ConfirmationReceiptObject.cs @@ -48,6 +48,7 @@ namespace BeWoPlanerMobil.Util.ReportUtils { None, Some, - All + All, + AllOwnServiceRecords } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Customer/Customer.cshtml b/BeWoPlanerMobil/Views/Customer/Customer.cshtml index d3092165f..ece606f63 100644 --- a/BeWoPlanerMobil/Views/Customer/Customer.cshtml +++ b/BeWoPlanerMobil/Views/Customer/Customer.cshtml @@ -8,6 +8,17 @@ }
@@ -462,7 +464,6 @@
} -

@@ -956,7 +957,8 @@ var isAllowedToViewBargeldkassen = AbstractModel.HasRightToViewAllCustomersBargeldkassen || (isRelatedCustomer && AbstractModel.HasRightToViewOwnCustomersBargeldkassen); } - + + @* Bargeldverwaltung *@ @if(Html.IsInDebugMode() && isAllowedToViewBargeldkassen && !(Model.Bargeldkassen is null) && Model.Bargeldkassen.Any()) { @@ -982,11 +984,12 @@ } - - @if(Html.IsInDebugMode() && AbstractModel.HasRightToViewCustomerAbsenceTimes) + + @* Abwesenheiten *@ + @if(AbstractModel.HasRightToViewCustomerAbsenceTimes) {
-
+
@@ -1003,7 +1006,9 @@ Abwesenheit hinzufügen
- @Html.Partial("CustomerAbsenceTimePartial", Model) +
+ @Html.Partial("CustomerAbsenceTimePartial", Model) +
@@ -1015,9 +1020,8 @@ }
-@if(Html.IsInDebugMode() && AbstractModel.HasRightToViewCustomerAbsenceTimes) +@if(AbstractModel.HasRightToViewCustomerAbsenceTimes) { -