Files
BeWoPlaner/BeWoPlanerMobil/Controllers/ReportController.cs
Lyndon Jetten a43bda6352 Kalender:
- Scheduler/View/SchedulerAppointmentEditForm.xaml:
          Ist die Ganztägig-CheckBox angehakt, sind die Uhrzeitfelder deaktiviert
          Wird die Ganztägig-CheckBox auf false gesetzt, wird das Ende automatisch auf denselben Tag des vormals ganztägigen Termin gesetzt
          -> 20.10.2020 00:00 bis 21.10.2020 00:00 wird zu 20.10.2020 00:30 - 20.10.2020 01:00

Mobilklient:
    - Weiterarbeit an der Unterschriftenfunktion für Mitarbeiter im Mobilklienten
2020-10-20 21:07:26 +02:00

165 lines
5.7 KiB
C#

using System;
using System.Linq;
using System.Web.Mvc;
using BeWo.Report.ReportObjects;
using BeWoPlanerMobil.Models;
using BeWoPlanerMobil.Service;
using BeWoPlanerMobil.Util;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace BeWoPlanerMobil.Controllers
{
/*
* Quittierungsbeleg wie im Fat-Client implementieren
* Mit Unterschriftenfunktion für den Mitarbeiter.
* Liste mit allen ServiceRecords des Mitarbeiters für einen Klienten.
*
* TODO: Beim Speichern von ServiceRecords prüfen, ob es schon eine Mitarbeiterunterschrift für Quittierungsbelege gibt
* TODO: Unterschrift in Quittierungsbeleg einbauen
*/
public class ReportController : AbstractBaseController
{
private ReportModel _Model;
public ReportModel Model
{
get
{
if(!MobileSessionFacade.IsUserLoggedIn())
{
RedirectToActionPermanent("Index", "Login");
return null;
}
if(((ReportModel) Session[ModelSessionConstants.ReportModelKey])?.Employee == null)
{
_Model = new ReportModel {Employee = MobileSessionFacade.LoggedInEmployee};
Session[ModelSessionConstants.ReportModelKey] = _Model;
}
else
{
_Model = (ReportModel) Session[ModelSessionConstants.ReportModelKey];
}
return _Model;
}
}
[Authorize]
public ActionResult Report()
{
if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || !AbstractModel.IsAllowedToSeeScheduler)
{
return Logout();
}
if(!AbstractModel.IsAllowedToSeeBills)
{
return RedirectToActionPermanent("Main", "Main");
}
var customers = EmployeeService.GetActiveCompactCustomersForEmployee(null);
Model.Customers = customers.OrderBy(d => d.ToString()).ToList();
return View(Model);
}
[Authorize]
[HttpPost]
public ActionResult CreateServiceOverview(FormCollection formCollection)
{
if(Model?.Employee?.EmployeeOid == null)
{
return Logout();
}
var customerOidString = formCollection[FormCollectionConstants.SelectedCustomerOidKey];
var monthString = formCollection[FormCollectionConstants.SelectedMonthKey];
var yearString = formCollection[FormCollectionConstants.SelectedYearKey];
var isCustomerOidSuccessful = long.TryParse(customerOidString, out var customerOid);
var isMonthSuccessful = int.TryParse(monthString, out var month);
var isYearSuccessful = int.TryParse(yearString, out var year);
if(!isCustomerOidSuccessful || !isMonthSuccessful || !isYearSuccessful)
{
return Report();
}
Model.QuittierungsbelegItems.Clear();
var selectedCustomer = Model.Customers.FirstOrDefault(customer => customer.CustomerOid == customerOid);
Model.SelectedCustomer = selectedCustomer;
Model.SelectedYear = year;
Model.SelectedMonth = month;
var startDay = new DateTime(year, month, 1);
var endDay = startDay.AddMonths(1).AddDays(-1);
var reportObject = ServicesOverviewRO.Create(customerOid, month, year, false, 0L, Model.Employee.EmployeeOid.Value, 1, endDay.Day, null);
reportObject.Services.DoForEach(serviceDetail => { Model.QuittierungsbelegItems.Add(new QuittierungsbelegItem(serviceDetail)); });
if(Model.QuittierungsbelegItems.Count == 0)
{
TempData["HasWarningMessage"] = true;
}
return RedirectToActionPermanent("Report");
}
[Authorize]
public string SetCustomer(long customerOid)
{
if(Model == null)
{
return _LeerzeichenFuerGetMethoden;
}
Model.SelectedCustomer = Model.Customers.FirstOrDefault(customer => customer.CustomerOid == customerOid);
return _LeerzeichenFuerGetMethoden;
}
[Authorize]
[HttpPost]
public string CreateEmployeeSignatureForServiceOverview(string base64SignatureString)
{
if(Model == null)
{
Logout();
}
var confirmationReceiptSignature = new ConfirmationReceiptSignatureDC();
var serviceRecordOids = Model.QuittierungsbelegItems.Select(item => item.ServiceRecordOid).ToList();
var serviceRecords = OperationsService.GetServiceRecordsByIds(serviceRecordOids);
confirmationReceiptSignature.ServiceRecords = serviceRecords;
confirmationReceiptSignature.EmployeeOid = Model.Employee.EmployeeOid;
using(var signatureBitmap = SignatureUtils.Base64StringToBitmap(base64SignatureString.Split(',')[1]))
{
var isValid = SignatureUtils.ValidateSignature(signatureBitmap);
if(!isValid)
{
return MobileUtils.SerializeObject("Das Unterschriftenfeld darf nicht leer sein.");
}
confirmationReceiptSignature.SignatureImage = base64SignatureString;
OperationsService.InsertConfirmationReceiptSignature(confirmationReceiptSignature);
}
return _LeerzeichenFuerGetMethoden;
}
}
}