diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user index 197827697..e261725c0 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user @@ -8,7 +8,7 @@ - Release|Any CPU + Debug|Any CPU ProjectFiles 600 MvcControllerEmptyScaffolder diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index 7d76cae62..7aae2f4a3 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -277,12 +277,16 @@ namespace BeWoPlanerMobil.Controllers if (Model.AllGoals != null) { - //Model.SelectedGoals = DcToMokMapper.CreateZiele(Model.AllGoals.Where(g => Model.SelectedGoalOids.Contains(g.ValueListEntryOid.Value))); + if (Model.SelectedGoals.Count == 0 && Model.SelectedGoalOids.Count > 0) // Diese Abfrage muss bleiben, sonst werden vorher gewählte Bewertungen überschrieben + { + Model.SelectedGoals = DcToMokMapper.CreateZiele(Model.AllGoals.Where(g => Model.SelectedGoalOids.Contains(g.ValueListEntryOid.Value))); + } + } if (Model.IsInEditingMode && Model.SelectedServiceRecordOid.HasValue) { - Model.SelectedServiceRecord = Model.GetServiceRecord(Model.SelectedServiceRecordOid.Value); + Model.SelectedServiceRecord = Model.ServiceRecords.FirstOrDefault(sr => sr.ServiceRecordOid.Equals(Model.SelectedServiceRecordOid.Value)); } } @@ -520,6 +524,57 @@ namespace BeWoPlanerMobil.Controllers return list; } + public ServiceRecordDC GetServiceRecordDC(long serviceRecordOid, bool getCompact) + { + ServiceRecordDC dc = null; + if (_Model != null) + { + dc = _Model.FindServiceRecord(serviceRecordOid); + } + if (dc == null) + { + var sr = DAOFactory.GenericDAO.LoadByID(serviceRecordOid); + if (getCompact) + { + dc = new ServiceRecordDC() + { + Betrag = sr.Betrag, + CostBearer2SupportConceptOid = sr.CostBearer2SupportConceptOid, + DistanceInMeter = (int?)sr.DistanceInMeter, + DistanceInMeterDecimal = sr.DistanceInMeter, + DurationInStunden = sr.DurationInStunden, + End = sr.End, + GroupEmployeeCount = sr.GroupEmployeeCount, + GroupOid = sr.GroupOid, + GroupPersonCount = sr.GroupPersonCount, + GroupRoundedDuration = sr.GroupRoundedDuration, + InsertedOn = sr.InsTs, + InsUser = sr.InsUser, + Notice = sr.Notice, + Notice2 = sr.Notice2, + Notice3 = sr.Notice3, + Notice4 = sr.Notice4, + Notice5 = sr.Notice5, + Relevance = sr.Relevance, + RoundedDuration = sr.RoundedDuration, + ServiceRecordFormat = sr.ServiceRecordFormat, + ServiceRecordType = sr.ServiceRecordType ?? ServiceRecordTypeId.DefaultActivity, + ServiceRecordVersion = sr.Version, + SignatureOid = sr.SignatureOid, + WohnheimbuchungsOid = sr.WohnheimbuchungsOid, + ServiceRecordOid = sr.Oid, + Start = sr.Start + }; + return dc; + } + dc = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(sr); + } + + return dc; + } + + + [Authorize] public ActionResult Main() { @@ -1343,7 +1398,7 @@ namespace BeWoPlanerMobil.Controllers if(Model.IsInEditingMode) { var selectedRecordOid = Model.SelectedServiceRecordOid ?? Model.SelectedServiceRecord.ServiceRecordOid; - Model.NewServiceRecord = Model.GetServiceRecord(selectedRecordOid.Value); + Model.NewServiceRecord = GetServiceRecordDC(selectedRecordOid.Value, false); } if(Model.NewServiceRecord is null) @@ -1379,11 +1434,11 @@ namespace BeWoPlanerMobil.Controllers } } - var sclo = Model.SupportConceptListObjects.FirstOrDefault(a => a.Equals(selectedCostbearerScRelOid)); + var sclo = Model.SupportConceptListObjects.FirstOrDefault(a => a.CostBearer2SupportConceptOid.Equals(selectedCostbearerScRelOid)); if(!(sclo is null)) { - var sc = CustomerService.LoadCompactSupportConceptDC(sclo.SupportConceptOid, Model.LoggedInEmployee.EmployeeOid); + var sc = GetCompactSupportConcept(sclo.SupportConceptOid); Model.NewServiceRecord.SupportConcept = sc; @@ -2005,7 +2060,7 @@ namespace BeWoPlanerMobil.Controllers } newServiceRecord.Employee = emp; - newServiceRecord.SupportConcept = CustomerService.LoadCompactSupportConceptDC(sc.SupportConceptOid, null); + newServiceRecord.SupportConcept = GetCompactSupportConcept(sc.SupportConceptOid); newServiceRecord.CostBearer = sc.CostBearerList.ElementAt(0).Organisation; newServiceRecord.Customer = sc.Customer; newServiceRecord.CostBearer2SupportConceptOid = sc.CostBearerRelOids.ElementAt(0); @@ -2241,9 +2296,10 @@ namespace BeWoPlanerMobil.Controllers var allGoals = new List(); - if(Model.IsInGroupBookingMode) + if(Model.IsInGroupBookingMode || Model.IsInMultiBookingMode) { var supportConcepts = GetSelectedGroupBookingSupportConcepts(); + LoadSupportConceptThings(null, false); supportConcepts.DoForEach(supportConcept => { allGoals.AddRangeIfElementsNotIn(supportConcept.Goals); }); } @@ -2457,7 +2513,7 @@ namespace BeWoPlanerMobil.Controllers Model.SelectedServiceRecordOid = serviceRecordOid; - var selectedServiceRecord = MapperFactory.ServiceRecordDC_ServiceRecord.MapToNewDC(DAOFactory.GenericDAO.LoadByID(serviceRecordOid)); + var selectedServiceRecord = GetServiceRecordDC(serviceRecordOid, false); if(selectedServiceRecord is null) { @@ -2465,6 +2521,7 @@ namespace BeWoPlanerMobil.Controllers } Model.SelectedGoalOids = selectedServiceRecord.Goals.Select(g => g.ValueListEntryOid.Value).ToList(); + Model.SelectedGoals = DcToMokMapper.CreateZiele(selectedServiceRecord.Goals); var selectedServiceDescription = selectedServiceRecord.ServiceDescription; var selectedServiceCategory = selectedServiceDescription.Category; @@ -2654,7 +2711,7 @@ namespace BeWoPlanerMobil.Controllers { if(supportConcept.SupportConceptOid != null) { - checkServiceRecord.SupportConcept = CustomerService.LoadCompactSupportConceptDC(supportConcept.SupportConceptOid, Model.LoggedInEmployee.EmployeeOid); + checkServiceRecord.SupportConcept = GetCompactSupportConcept(supportConcept.SupportConceptOid); } checkServiceRecord.Customer = supportConcept.Customer; @@ -2764,7 +2821,7 @@ namespace BeWoPlanerMobil.Controllers sr.Customer = serviceRecord.SupportConcept?.Customer; var result = OperationsService.ValidateServiceRecord(sr, null, maxDaysEditSRsAllowed, employeeOids, costBearer2SupportConceptOids); - var node = CreateFlatSupportConceptItem(CustomerService.LoadCompactSupportConceptDC(sr.SupportConcept.SupportConceptOid, Model.SelectedEmployee.EmployeeOid), null); + var node = CreateFlatSupportConceptItem(GetCompactSupportConcept(sr.SupportConcept.SupportConceptOid), null); dateRangeString = node?.SupportConceptTreeNodeDC != null ? node.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC.DateRangeString : string.Empty; validationResults.AddIfNotIn(new ServiceRecord2Validation(sr, result, dateRangeString)); @@ -2775,7 +2832,7 @@ namespace BeWoPlanerMobil.Controllers { if(Model.SelectedSupportConcept != null) { - var node = CreateFlatSupportConceptItem(CustomerService.LoadCompactSupportConceptDC(Model.SelectedSupportConcept.SupportConceptOid, Model.SelectedEmployee.EmployeeOid), null); + var node = CreateFlatSupportConceptItem(GetCompactSupportConcept(Model.SelectedSupportConcept.SupportConceptOid), null); dateRangeString = node?.SupportConceptTreeNodeDC != null ? node.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC.DateRangeString : ""; } @@ -3031,7 +3088,8 @@ namespace BeWoPlanerMobil.Controllers [Authorize] public string ValidateServiceRecordDeletion(string serviceRecordOidString) { - if(Model is null) + SkipModelInitialization = true; + if(!IsUserLoggedIn()) { Logout(); return LeerzeichenFuerGetMethoden; @@ -3046,7 +3104,7 @@ namespace BeWoPlanerMobil.Controllers var newResult = new ValidationResult(); - var serviceRecord = Model.GetServiceRecord(serviceRecordOid); + var serviceRecord = GetServiceRecordDC(serviceRecordOid, true); if(serviceRecord is null) { @@ -3467,6 +3525,7 @@ namespace BeWoPlanerMobil.Controllers Model.IsInMultiBookingMode = false; Model.SelectedGoalOids.Clear(); + Model.SelectedGoals.Clear(); Model.SelectedServiceCategoryOid = null; Model.SelectedServiceDescriptionOid = null; @@ -3568,6 +3627,7 @@ namespace BeWoPlanerMobil.Controllers //Model.GroupBookingSelectedSupportConceptOids = Model.GroupBookingSelectedSupportConcepts.Select(s => s.SupportConceptOid.Value).ToList(); CreateModelSupportConceptListObjects(false); + LoadSupportConceptThings(null, true); return PartialView("GroupBookingScCbRelList", Model); } @@ -3640,13 +3700,14 @@ namespace BeWoPlanerMobil.Controllers [Authorize] public string GetSignatureImage(long serviceRecordOid, long signatureOid) { - if(Model is null) + SkipModelInitialization = true; + if(!IsUserLoggedIn()) { Logout(); return LeerzeichenFuerGetMethoden; } - var signatureServiceRecord = Model.GetServiceRecord(serviceRecordOid); + var signatureServiceRecord = GetServiceRecordDC(serviceRecordOid, true); var signatureServiceRecordHeader = MainModel.GetServiceRecordTimeHeader(signatureServiceRecord, false); var signatureImage = OperationsService.GetSignature(signatureOid).DataBild; @@ -3850,11 +3911,11 @@ namespace BeWoPlanerMobil.Controllers } - var sclo = Model.SupportConceptListObjects.FirstOrDefault(a => a.Equals(selectedCostbearer2SupportConceptRelOid)); - + var sclo = Model.SupportConceptListObjects.FirstOrDefault(a => a.CostBearer2SupportConceptOid.Equals(selectedCostbearer2SupportConceptRelOid)); + if (sclo != null) { - var sc = CustomerService.LoadCompactSupportConceptDC(sclo.SupportConceptOid, Model.LoggedInEmployee.EmployeeOid); + var sc = GetCompactSupportConcept(sclo.SupportConceptOid); Model.NewServiceRecord.SupportConcept = sc; Model.NewServiceRecord.Customer = sc.Customer; @@ -3944,6 +4005,21 @@ namespace BeWoPlanerMobil.Controllers return ResetEditingMode(); } + private CompactSupportConceptDC GetCompactSupportConcept(long supportConceptOid) + { + CompactSupportConceptDC sc = null; + if (Model.SupportConcepts != null) + { + //sc = Model.SupportConcepts.FirstOrDefault(s => s.SupportConceptOid == supportConceptOid); + } + if (sc == null) + { + sc = CustomerService.LoadCompactSupportConceptDC(supportConceptOid, Model.LoggedInEmployee.EmployeeOid); + } + + return sc; + } + [Authorize] public string ToggleDurationUnit(bool isInHoursMode) { @@ -4171,7 +4247,8 @@ namespace BeWoPlanerMobil.Controllers [Authorize] public ActionResult DeleteSignature(FormCollection formCollection) { - if(Model is null) + SkipModelInitialization = true; + if(!IsUserLoggedIn()) { TempData[TempDataConstants.DoLogoutKey] = true; return Logout(); @@ -4298,6 +4375,9 @@ namespace BeWoPlanerMobil.Controllers } } + CreateModelSupportConceptListObjects(false); + LoadSupportConceptThings(null, true); + //Model.SelectedConceptCostBearerRelationOids = Model.SelectedConceptCostBearerRelations.Select(s => s.CostBearer2SupportConceptOid.Value).ToList(); //Model.MultiBookingSelectedSupportConceptOids = Model.MultiBookingSelectedSupportConcepts.Select(s => s.SupportConceptOid.Value).ToList(); @@ -4878,7 +4958,7 @@ namespace BeWoPlanerMobil.Controllers Model.OneTimeLink = link; - var serviceRecord = Model.GetServiceRecord(serviceRecordOid); + var serviceRecord = GetServiceRecordDC(serviceRecordOid, false); var hilfeplan = Model.SelectedSupportConceptListObject.NameAndDateOfBirth + " | " + Model.SelectedSupportConceptListObject.SupportConceptTimeSpan; var leistung = serviceRecord.ServiceDescription.Name; @@ -4928,6 +5008,9 @@ namespace BeWoPlanerMobil.Controllers //LoadGoals(); + CreateModelSupportConceptListObjects(false); + LoadSupportConceptThings(null, true); + return PartialView("GoalTreePartial", Model); } diff --git a/BeWoPlanerMobil/Models/MainModel.cs b/BeWoPlanerMobil/Models/MainModel.cs index c1cc500af..dc0c17716 100644 --- a/BeWoPlanerMobil/Models/MainModel.cs +++ b/BeWoPlanerMobil/Models/MainModel.cs @@ -669,7 +669,20 @@ namespace BeWoPlanerMobil.Models } } - public string DistanceToEdit => SelectedServiceRecord?.DistanceInMeterDecimal.ToString() ?? string.Empty; + public string DistanceToEdit + { + get + { + if (SelectedServiceRecord != null && SelectedServiceRecord.DistanceInMeterDecimal.HasValue) + { + var dist = SelectedServiceRecord.DistanceInMeterDecimal.Value; + + return Math.Round(dist, 0, MidpointRounding.AwayFromZero).ToString(); + } + + return string.Empty; + } + } public string NoticeToEdit => SelectedServiceRecord?.NoticeList.FirstOrDefault() ?? string.Empty; @@ -679,7 +692,7 @@ namespace BeWoPlanerMobil.Models public long SelectedServiceRecordsServiceDescriptionOid => SelectedServiceRecord?.ServiceDescription?.ServiceDescriptionOid ?? 0L; - public ServiceRecordDC GetServiceRecord(long serviceRecordOid) + public ServiceRecordDC FindServiceRecord(long serviceRecordOid) { return ServiceRecords.FirstOrDefault(serviceRecord => serviceRecord.ServiceRecordOid.Equals(serviceRecordOid)); } diff --git a/BeWoPlanerMobil/Models/ReportModel.cs b/BeWoPlanerMobil/Models/ReportModel.cs index 76fec3f1b..f45f15baa 100644 --- a/BeWoPlanerMobil/Models/ReportModel.cs +++ b/BeWoPlanerMobil/Models/ReportModel.cs @@ -30,7 +30,7 @@ namespace BeWoPlanerMobil.Models } } - public QbSignatureIntervalSelection SelectedIntervalSelection { get; set; } + public QbSignatureIntervalSelection SelectedIntervalSelection { get { return ReportSessionModel.SelectedIntervalSelection; } set { ReportSessionModel.SelectedIntervalSelection = value; } } public List IntervalSelections => new List { diff --git a/BeWoPlanerMobil/Models/ReportSessionModel .cs b/BeWoPlanerMobil/Models/ReportSessionModel .cs index fc625767d..c41bb5f86 100644 --- a/BeWoPlanerMobil/Models/ReportSessionModel .cs +++ b/BeWoPlanerMobil/Models/ReportSessionModel .cs @@ -35,6 +35,7 @@ namespace BeWoPlanerMobil.Models public ConfirmationReceiptObject ConfirmationReceiptObject { get; internal set; } public Quittierungsbelegsunterschriftenobjekt Quittierungsbelegsunterschriftenobjekt { get; internal set; } public List SelectedConfirmationReceiptSignatures { get; internal set; } + public QbSignatureIntervalSelection SelectedIntervalSelection { get; internal set; } public void ResetValues() { @@ -55,6 +56,7 @@ namespace BeWoPlanerMobil.Models ConfirmationReceiptObject = null; Quittierungsbelegsunterschriftenobjekt = null; SelectedConfirmationReceiptSignatures = null; + SelectedIntervalSelection = QbSignatureIntervalSelection.FirstHalf; } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Util/DcToMokMapper.cs b/BeWoPlanerMobil/Util/DcToMokMapper.cs index 0b0e2986a..cf92be3d9 100644 --- a/BeWoPlanerMobil/Util/DcToMokMapper.cs +++ b/BeWoPlanerMobil/Util/DcToMokMapper.cs @@ -38,7 +38,7 @@ namespace BeWoPlanerMobil.Util public static IList CreateZiele(IEnumerable dclist) { - return dclist.Select(g => CreateZiel(g)).ToList(); + return dclist?.Select(g => CreateZiel(g)).ToList(); } public static MokServiceRecord CreateServiceRecord(ServiceRecordDC dc, ReportModel model) diff --git a/BeWoPlanerMobil/Views/Main/GroupBookingFormPartial.cshtml b/BeWoPlanerMobil/Views/Main/GroupBookingFormPartial.cshtml index 028174d84..86a431b2b 100644 --- a/BeWoPlanerMobil/Views/Main/GroupBookingFormPartial.cshtml +++ b/BeWoPlanerMobil/Views/Main/GroupBookingFormPartial.cshtml @@ -194,12 +194,7 @@ var startTimeValue = Model.StartTimeToEdit; var endTimeValue = Model.EndTimeToEdit; var divisor = Model.SelectedDurationUnit == "Stunden" ? 60 : 1; - var durationValue = string.Empty; - - if(!(Model.SelectedServiceRecord is null)) - { - durationValue = (Model.SelectedServiceRecord?.RoundedDuration / divisor).ToString(); - } + var durationValue = Model.DurationToEdit; var afterValidationState = TempData[TempDataConstants.AfterValidationStateKey]; diff --git a/BeWoPlanerMobil/Views/Main/MultiBookingFormPartial.cshtml b/BeWoPlanerMobil/Views/Main/MultiBookingFormPartial.cshtml index 76c7a01b8..89e1eb442 100644 --- a/BeWoPlanerMobil/Views/Main/MultiBookingFormPartial.cshtml +++ b/BeWoPlanerMobil/Views/Main/MultiBookingFormPartial.cshtml @@ -154,12 +154,7 @@ var divisor = Model.SelectedDurationUnit == "Stunden" ? 60 : 1; - var durationValue = string.Empty; - - if(Model.SelectedServiceRecord != null) - { - durationValue = (Model.SelectedServiceRecord?.RoundedDuration / divisor).ToString(); - } + var durationValue = Model.DurationToEdit; var afterValidationState = TempData[TempDataConstants.AfterValidationStateKey]; diff --git a/ReportImp/LebenshilfeBadKreuznachFUD/Reporting/CustomReportCreator.cs b/ReportImp/LebenshilfeBadKreuznachFUD/Reporting/CustomReportCreator.cs index f279de541..64d421099 100644 --- a/ReportImp/LebenshilfeBadKreuznachFUD/Reporting/CustomReportCreator.cs +++ b/ReportImp/LebenshilfeBadKreuznachFUD/Reporting/CustomReportCreator.cs @@ -8,6 +8,7 @@ using BeWo.Report; using BeWo.Report.DefaultReports; using BeWo.Report.ReportObjects; using BeWo.Service.DCEntityMapper; +using BS.Shared; using DevExpress.XtraReports.UI; using LebenshilfeBadKreuznachFUD.Reporting.Reports; @@ -24,12 +25,17 @@ namespace LebenshilfeBadKreuznachFUD.Reporting { var rootReport = CreateServicesOverviewReportForRo(lROs[0], serviceCategoryOid); - rootReport.CreateDocument(); - + if (rootReport.Pages.Count == 0) + { + rootReport.CreateDocument(); + } for (int i = 1; i < lROs.Count; i++) { var lNext = CreateServicesOverviewReportForRo(lROs[i], serviceCategoryOid); - lNext.CreateDocument(); + if (lNext.Pages.Count == 0) + { + lNext.CreateDocument(); + } rootReport.Pages.AddRange(lNext.Pages); } @@ -38,16 +44,30 @@ namespace LebenshilfeBadKreuznachFUD.Reporting return new XtraReport(); } + public override XtraReport CreateServiceOverviewReportForCustomers(IList customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende) + { + return base.CreateServiceOverviewReportForCustomers(customerOids, month, year, orgaOid, empOid, serviceCategoryOid, startDay, endDay, nurFehlende); + } public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay) { var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid); return CreateServicesOverviewReportForRo(ro, serviceCategoryOid); } + public override XtraReport CreateReportForServicesOverviewRo(ServicesOverviewRO ro, string reportId) + { + return CreateServicesOverviewReportForRo(ro, null); + } + private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid) { XtraReport report = null; + if (ro.CustomerLastName == "Fritsch") + { + + } + ServicesOverviewRO entlastungRo = ServicesOverviewRO.CopyFromRO(ro); ServicesOverviewRO sonstigesRo = ServicesOverviewRO.CopyFromRO(ro); diff --git a/ReportImp/_TemplateNeuKunde/Reporting/CustomReportCreator.cs b/ReportImp/_TemplateNeuKunde/Reporting/CustomReportCreator.cs index ff4c235e9..3e064654a 100644 --- a/ReportImp/_TemplateNeuKunde/Reporting/CustomReportCreator.cs +++ b/ReportImp/_TemplateNeuKunde/Reporting/CustomReportCreator.cs @@ -161,6 +161,10 @@ namespace TemplateNeuKunde.Reporting // // return new XtraReport(); // //} + //public override XtraReport CreateReportForServicesOverviewRo(ServicesOverviewRO ro, String reportId) + //{ + // return CreateServicesOverviewReportForRo(ro, null); + //} // //private XtraReport CreateServicesOverviewReportForRo(ServicesOverviewRO ro, long? serviceCategoryOid) // //{ diff --git a/Service/ServiceImplementations/CustomerServiceImp.cs b/Service/ServiceImplementations/CustomerServiceImp.cs index 3bbcf0f18..80aa4fd29 100644 --- a/Service/ServiceImplementations/CustomerServiceImp.cs +++ b/Service/ServiceImplementations/CustomerServiceImp.cs @@ -2027,7 +2027,7 @@ namespace BeWo.Service.ServiceImplementations var orgDC = new CompactOrganisationDC(); orgDC.Name = iCBRel.CostBearer.Organisation.Name; orgDC.OrganisationOid = iCBRel.CostBearer.Organisation.Oid.Value; - + orgDC.CostBearerOid = iCBRel.CostBearer.Oid.Value; costBearer.Organisation = orgDC; // costBearer.Street = iCBRel.CostBearer.Organisation.Address.Street;