Files
BeWoPlaner/BeWoPlanerMobil/Controllers/ReportController.cs
Lyndon Jetten 63d9844e3f BeWoPlanerMobil:
Beim Bearbeiten von Zeiterfassungseinträgen ohne Zeitangaben wird das Datum nicht mehr auf 0 Uhr gesetzt
2020-09-21 11:57:10 +02:00

121 lines
4.1 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.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: Warnung anzeigen, dass man die betroffenen Einträge nicht mehr ändern kann.
*
* TODO: Unterschrift zu hinzufügen
*/
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 RedirectToActionPermanent("Index", "Login");
}
var customers = EmployeeService.GetActiveCompactCustomersForEmployee(null);
Model.Customers = customers;
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();
}
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;
}
}
}