Files
BeWoPlaner/Host/ServiceRecordPage.aspx.cs
2016-06-27 01:45:38 +02:00

489 lines
17 KiB
C#

using System;
using System.Linq;
using System.Security;
using System.Text;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using BeWo.Service.Plugins;
using BS.Shared.DataContracts;
using BS.Shared.Services;
using BeWo.Data;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.ServiceImplementations;
using BS.Shared;
using BS.Shared.Extensions;
using System.Collections.Generic;
namespace Host
{
public partial class ServiceRecordPage : Page//, ICallbackEventHandler
{
//protected bool IsCreateAllowed
//{
// get { return rights != null && rights.Contains(UserRightType.ServiceRecordView_Create); }
//}
//protected bool CurrentSCHasGoals { get; set; }
//private List<UserRightType> rights;
//private Dictionary<ValueListEntry, List<ValueListEntry>> ziele = new Dictionary<ValueListEntry, List<ValueListEntry>>();
//private string GetCallbackReference(Control control)
//{
// return Page.ClientScript.GetCallbackEventReference(control, "arg", "callback", "context");
//}
//private string SaveTabStateCallbackRaiseEvent(string argument)
//{
// Session["CurrentlySelectedTab"] = argument;
// return argument;
//}
//protected void Page_Load(object sender, EventArgs e)
//{
// try
// {
// if (!SessionFacade.IsUserLoggedIn())
// throw new SecurityException("Anmeldung erforderlich!");
// var cm = Page.ClientScript;
// var cbReference = cm.GetCallbackEventReference(this, "arg", "ReceiveServerData", "");
// var callbackScript = "function CallServer(arg, context) {" + cbReference + "; }";
// cm.RegisterClientScriptBlock(GetType(), "CallServer", callbackScript, true);
// rights = SessionFacade.LoggedInUser.UserGroups.SelectMany(ug => ug.Rights.Select(r => r.RightType)).ToList();
// bt_create.DataBind();
// if (IsPostBack) return;
// var SelectedSupportConcept = "-1";
// if (Session["SelectedSupportConcept"] != null)
// {
// SelectedSupportConcept = Session["SelectedSupportConcept"].ToString();
// }
// var operationsService = new OperationsServiceImp();
// // Browserinformationen speichern
// var brauser = Page.Request.Browser;
// var brauserInfoDC = new BeWoMobilBrowserInfoDC
// {
// Type = brauser.Type,
// Name = brauser.Browser,
// BrowserVersion = brauser.Version,
// Platform = brauser.Platform,
// Tenant = SessionFacade.Tenant
// };
// operationsService.InsertBeWoMobilBrowserInfo(brauserInfoDC);
// // ------------------------
// var customers = SessionFacade.LoggedInUser.Employee.Employee2CustomerList.Select(ec => ec.Customer).ToList();
// var supportConcepts = DAOFactory.SearchDAO.GetAllActiveSupportConceptsByCustomers(customers.Select(s => s.Oid.Value).ToList());
// //if (!rights.Contains(UserRightType.ServiceRecord_AllowCreateServiceRecordsForAllClients))
// // supportConcepts = supportConcepts.Where(s => customers.Contains(s.Customer)).ToList();
// if(!rights.Contains(UserRightType.ServiceRecordView_View))
// supportConcepts.Clear();
// foreach (var sc in supportConcepts.OrderBy(sc => sc.Customer.Person.LastName))
// foreach (var cb in sc.CostBearer2SupportConceptList)
// {
// var li = new ListItem(sc.Customer.Person.LastName
// + ", "
// + sc.Customer.Person.FirstName[0]
// + ". "
// + (cb.StartDate.HasValue ? cb.StartDate.Value.ToShortDateString().Remove(6, 2) + "-" : string.Empty)
// + (cb.EndDate.HasValue ? cb.EndDate.Value.ToShortDateString().Remove(6, 2) : string.Empty)
// + " "
// + cb.CostBearer.Organisation.Name, cb.Oid.ToString());
// combo_supportconcepts.Items.Add(li);
// }
// combo_supportconcepts.Items.Insert(0, new ListItem(string.Empty, "-1"));
// combo_supportconcepts.SelectedValue = SelectedSupportConcept;
// var serviceCategories = operationsService.GetAllServiceCategories();
// combo_serviceCategories.Items.AddRange(serviceCategories
// .Select(c => new ListItem(c.Name, c.ServiceCategoryOid.ToString())).ToArray());
// combo_serviceDescriptions.Items.AddRange(operationsService.GetAllServiceDescriptions()
// .Where(sd => sd.Category.ServiceCategoryOid.Equals(serviceCategories[0].ServiceCategoryOid))
// .Select(sd => new ListItem(sd.Name, sd.ServiceDescriptionOid.ToString())).ToArray());
// tb_date.Text = DateTime.Now.ToShortDateString();
// if (!SelectedSupportConcept.Equals("-1"))
// {
// RefreshEntryList();
// }
// //var allCustomers = DAOFactory.GenericDAO.GetAllActive<Customer>();
// //foreach (var li in allCustomers.Select(customer => new ListItem(customer.Person.FirstNameLastName, customer.Oid.ToString())))
// //{
// // CustomerDropdownList.Items.Add(li);
// //}
// //CustomerDropdownList.Items.Insert(0, new ListItem(string.Empty, "-1"));
// //CustomerDropdownList.SelectedIndex = 0;
// }
// catch (Exception ex)
// {
// lbl_error.Text = "Es ist leider ein Fehler aufgetreten: " + ex.Message;
// }
//}
//protected void bt_create_Click(object sender, EventArgs e)
//{
// if (rights != null && !rights.Contains(UserRightType.ServiceRecordView_Create)) return;
// lbl_error.Text = string.Empty;
// lbl_success.Text = string.Empty;
// int startHours, startMinutes, endHours, endMinutes, durationMinutes;
// DateTime date;
// if (combo_supportconcepts.SelectedValue.Equals("-1"))
// {
// lbl_error.Text = "Bitte wählen Sie einen Hilfeplan aus";
// return;
// }
// if (!DateTime.TryParse(tb_date.Text, out date))
// {
// lbl_error.Text = "Bitte geben Sie ein gültiges Datum an";
// return;
// }
// var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(long.Parse(combo_supportconcepts.SelectedValue));
// var sd = DAOFactory.GenericDAO.LoadByID<ServiceDescription>(long.Parse(combo_serviceDescriptions.SelectedValue));
// var actualMinuteIntervall = MapperFactory.CostRatePeriodDC_CostRatePeriod
// .MapToNewDCs(cb2sc.CostBearer.CostRatePeriods)
// .GetCurrentlyValidRateValue(CostRatePeriodType.MinutesIntervall) ?? 0m;
// var ausgewaehlteZiele = (IList<ValueListEntry2Object>) Session["AusgewaehlteZiele"];
// var sr = new ServiceRecord
// {
// Notice = tb_notice.Text,
// SupportConcept = cb2sc.SupportConcept,
// Customer = cb2sc.SupportConcept.Customer,
// CostBearer2SupportConcept = cb2sc,
// CostBearer2SupportConceptOid=cb2sc.Oid,
// Employee = SessionFacade.LoggedInUser.Employee,
// ServiceDescription = sd,
// InsTs = DateTime.Now,
// InsUser = SessionFacade.LoggedInUser.LoginName,
// IP = Request.UserHostAddress,
// ValueList = ausgewaehlteZiele
// };
// bool durationParsedSuccessfully = Int32.TryParse(tb_duration.Value, out durationMinutes);
// bool startParsedSuccessfully = TryParseTime(tb_start.Value, out startHours, out startMinutes);
// bool endParsedSuccessfully = TryParseTime(tb_stop.Value, out endHours, out endMinutes);
// if (!durationParsedSuccessfully || durationMinutes == 0)
// {
// // keine Dauer angegeben... start & stop
// if (startParsedSuccessfully && endParsedSuccessfully)
// {
// var start = date.AddHours(startHours).AddMinutes(startMinutes);
// var stop = date.AddHours(endHours).AddMinutes(endMinutes);
// if (start > stop)
// {
// lbl_error.Text = "Die Startzeit muss vor der Endzeit liegen";
// return;
// }
// sr.Start = start;
// sr.End = stop;
// var duration = (int)(stop - start).TotalMinutes;
// if (sr.CostBearer2SupportConcept != null)
// {
// var calc = PluginLoader.FindClass<Calculations>(sr.CostBearer2SupportConcept.CostBearer.ID) ?? Calculations.GetInstance(sr.CostBearer2SupportConcept.CostBearer.ID);
// duration = calc.GetRoundedDuration((int) actualMinuteIntervall, duration);
// }
// sr.RoundedDuration = duration;
// }
// else
// {
// lbl_error.Text = "Bitte geben Sie eine gültige Dauer (in Minuten) oder Start und Endzeit an (HH:MM oder HHMM).";
// return;
// }
// }
// else
// {
// // Dauer angegeben
// if (sr.CostBearer2SupportConcept != null)
// {
// var calc = PluginLoader.FindClass<Calculations>(sr.CostBearer2SupportConcept.CostBearer.ID) ?? Calculations.GetInstance(sr.CostBearer2SupportConcept.CostBearer.ID);
// durationMinutes = calc.GetRoundedDuration((int)actualMinuteIntervall, durationMinutes);
// }
// sr.RoundedDuration = durationMinutes;
// if (startParsedSuccessfully && (startHours > 0 || startMinutes > 0))
// {
// // Dauer und Start angegeben
// sr.Start = date.AddHours(startHours).AddMinutes(startMinutes);
// }
// else
// {
// // nur Dauer, kein Start angegeben
// sr.Start = date.AddSeconds(1);
// }
// sr.End = sr.Start.Value.AddMinutes(durationMinutes);
// }
// var mandator = new OperationsServiceImp().GetMandatorEntity();
// //List<UserRightType> rights = SessionFacade.LoggedInUser.UserGroups.SelectMany(ug => ug.Rights.Select(r => r.RightType)).ToList();
// if (!rights.Contains(UserRightType.ServiceRecord_AllowEditAfterMaxDaysInNextMonth) && mandator.MaxDaysEditServiceRecordsAllowed.HasValue && mandator.MaxDaysEditServiceRecordsAllowed.Value > 0)
// {
// var dt = date.AddMonths(1);
// dt = dt.AddDays(mandator.MaxDaysEditServiceRecordsAllowed.Value);
// if (DateTime.Now >= dt)
// {
// lbl_error.Text = "Sie können keine neuen Leistungen für den " + date.ToShortDateString() + " dokumentieren, da bereits der " + mandator.MaxDaysEditServiceRecordsAllowed + ". des nachfolgenden Monats überschritten ist.";
// return;
// }
// }
// if (mandator.IsServiceRecordNoticeMandatory && string.IsNullOrEmpty(sr.Notice))
// {
// lbl_error.Text = "Bitte dokumentieren Sie die erbrachte Leistung (Notiz)";
// return;
// }
// DAOFactory.GenericDAO.Insert(sr);
// tb_start.Value = tb_stop.Value = tb_notice.Text = tb_duration.Value = string.Empty;
// tb_date.Text = DateTime.Now.ToShortDateString();
// lbl_success.Text = "Die Leistung wurde erfolgreich gebucht";
// RefreshEntryList();
//}
//protected void combo_serviceCategories_SelectedIndexChanged(object sender, EventArgs e)
//{
// lbl_success.Text = string.Empty;
// var operationsService = new OperationsServiceImp();
// combo_serviceDescriptions.Items.Clear();
// combo_serviceDescriptions.Items.AddRange(operationsService.GetAllServiceDescriptions()
// .Where(sd => sd.Category.ServiceCategoryOid.ToString().Equals(combo_serviceCategories.SelectedValue))
// .Select(sd => new ListItem(sd.Name, sd.ServiceDescriptionOid.ToString())).ToArray());
//}
//protected void combo_supportconcepts_SelectedIndexChanged(object sender, EventArgs e)
//{
// lbl_success.Text = string.Empty;
// Session.Remove("AusgewaehlteZiele");
// RefreshEntryList();
//}
//private void RefreshEntryList()
//{
// lb_entries.DataSource = null;
// if (!combo_supportconcepts.SelectedValue.Equals("-1"))
// {
// var oid = long.Parse(combo_supportconcepts.SelectedValue);
// var list = DAOFactory.SearchDAO.FindServiceRecords(null, oid);
// var filteredList = new List<ServiceRecord>();
// var groupOids = new Dictionary<long, bool>();
// foreach (var item in list)
// {
// if (item.CostBearer2SupportConceptOid != oid) continue;
// if (!item.GroupOid.HasValue || !groupOids.ContainsKey(item.GroupOid.Value))
// filteredList.Add(item);
// if (item.GroupOid.HasValue && !groupOids.ContainsKey(item.GroupOid.Value))
// groupOids.Add(item.GroupOid.Value, true);
// }
// filteredList.Sort((x, y) => y.Start.Value.CompareTo(x.Start.Value));
// lb_entries.DataSource = filteredList;
// var sc = DAOFactory.GenericDAO.GetByID<CostBearer2SupportConcept>(oid);
// if (sc != null)
// {
// if (sc.SupportConcept.ValueList.Count > 0)
// CurrentSCHasGoals = true;
// var children = sc.SupportConcept.ValueList.Where(vl => vl.Entry.Type == ValueListEntryType.SupportConceptGoalCategoryType || vl.Entry.Type == ValueListEntryType.SupportConceptGoalType || vl.Entry.Type == ValueListEntryType.SupportConceptIndividualGoalType).ToList();
// var parentOids = sc.SupportConcept.ValueList.Where(el => el.Entry.ParentOid.HasValue).Select(el => el.Entry.ParentOid.Value).ToList();
// var parents = DAOFactory.GenericDAO.LoadByIDs<ValueListEntry>(parentOids).Distinct().ToList();
// ziele = parents.ToDictionary(parent => parent, parent => children.Where(c => c.Entry.ParentOid.HasValue && parent.Oid.HasValue && c.Entry.ParentOid == parent.Oid.Value).Select(c => c.Entry).ToList());
// GoalListView.ItemDataBound += GoalListView_ItemDataBound;
// GoalListView.DataSource = ziele;
// GoalListView.DataBind();
// }
// }
// lb_entries.DataBind();
//}
//private static bool TryParseTime(string text, out int hours, out int minutes)
//{
// try
// {
// String[] hnm = null;
// if (text.IndexOf(":") >= 0)
// {
// hnm = text.Split(':');
// }
// else
// {
// if (text.Length <= 2)
// {
// hnm = new[] { text, "00" };
// }
// else if (text.Length == 4)
// {
// hnm = new[] { text.Substring(0, 2), text.Substring(2) };
// }
// }
// hours = int.Parse(hnm[0]);
// minutes = int.Parse(hnm[1]);
// return (hours >= 0 && hours <= 23) && (minutes >= 0 && minutes <= 59);
// }
// catch
// {
// hours = 0;
// minutes = 0;
// return false;
// }
//}
//protected void OnDeleteBtnClick(object sender, EventArgs e)
//{
// if (rights != null && !rights.Contains(UserRightType.ServiceRecordView_Create)) return;
// var b = (Button)sender;
// var serviceRecordOid = b.CommandArgument;
// long oid;
// var couldParse = long.TryParse(serviceRecordOid, out oid);
// var sr = DAOFactory.GenericDAO.GetByID<ServiceRecord>(oid);
// if (!couldParse || !sr.Version.HasValue) return;
// var operationsService = new OperationsServiceImp();
// operationsService.DeleteServiceRecord(oid, sr.Version.Value);
// RefreshEntryList();
// lbl_success.Text = "Der Eintrag '" + sr.Title + "' wurde erfolgreich gelöscht";
//}
//protected void OnEditBtnClick(object sender, EventArgs e)
//{
// if (rights != null && !rights.Contains(UserRightType.ServiceRecordView_Edit)) return;
// var b = (Button) sender;
// var serviceRecordOid = b.CommandArgument;
// long oid;
// var couldParse = long.TryParse(serviceRecordOid, out oid);
// if (!couldParse) return;
// var cb2sc = DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(long.Parse(combo_supportconcepts.SelectedValue));
// Session["ServiceRecord2Edit"] = DAOFactory.GenericDAO.GetByID<ServiceRecord>(oid);
// Session["actualMinuteIntervall"] = MapperFactory.CostRatePeriodDC_CostRatePeriod
// .MapToNewDCs(cb2sc.CostBearer.CostRatePeriods)
// .GetCurrentlyValidRateValue(CostRatePeriodType.MinutesIntervall) ?? 0m;
// Response.Redirect("~/ServiceRecordEditPage.aspx?tenant=" + SessionFacade.Tenant);
//}
//protected bool IsEditBtnVisible()
//{
// return rights != null && rights.Contains(UserRightType.ServiceRecordView_Edit);
//}
//protected bool IsDelBtnVisible()
//{
// return rights != null && rights.Contains(UserRightType.ServiceRecordView_Delete);
//}
//private void GoalListView_ItemDataBound(object sender, ListViewItemEventArgs e)
//{
// try
// {
// var dataItem = (ListViewDataItem)e.Item;
// var objList = (KeyValuePair<ValueListEntry, List<ValueListEntry>>)dataItem.DataItem;
// var ddlListOfObjs = (ListView)dataItem.FindControl("GoalsThemselvesListView");
// ddlListOfObjs.DataSource = objList.Value;
// ddlListOfObjs.DataBind();
// }
// catch (Exception ex)
// {
// lbl_error.Text = "Es ist ein Fehler bei der Zieleauflistung aufgetreten: " + ex.Message;
// }
//}
//public void RaiseCallbackEvent(string valueListEntryOid)
//{
// var test = (List<ValueListEntry2Object>) Session["AusgewaehlteZiele"];
// if(test == null)
// Session["AusgewaehlteZiele"] = new List<ValueListEntry2Object>();
// var selectedGoals = (List<ValueListEntry2Object>) Session["AusgewaehlteZiele"];
// var oid = Convert.ToInt64(valueListEntryOid);
// if (selectedGoals.Any(a => a.Oid == oid)) return;
// var sg = DAOFactory.GenericDAO.GetByID<ValueListEntry>(oid);
// var blah = new ValueListEntry2Object
// {
// Entry = sg,
// InsTs = DateTime.Now,
// InsUser = SessionFacade.LoggedInUser.Employee.Person.FirstNameLastName,
// IsActive = ActivationTypeId.Active,
// ObjectTid = TableID.ServiceRecord
// };
// selectedGoals.Add(blah);
// Session["AusgewaehlteZiele"] = selectedGoals;
//}
//public string GetCallbackResult() { return string.Empty; }
//protected void combo_customers_SelectedIndexChanged(object sender, EventArgs e)
//{
//}
}
}