|
@@ -550,7 +550,7 @@ namespace PRSDesktop
|
|
|
|
|
|
private bool HasData(GridCellInfo cell)
|
|
|
{
|
|
|
- if (!cell.IsDataRowCell)
|
|
|
+ if (cell?.IsDataRowCell != true)
|
|
|
return false;
|
|
|
var propertyCollection = dataGrid.View.GetPropertyAccessProvider();
|
|
|
var cellValue = propertyCollection.GetValue(cell.RowData, cell.Column.MappingName);
|
|
@@ -576,8 +576,42 @@ namespace PRSDesktop
|
|
|
|
|
|
lg ??= new LeaveRequestGrid();
|
|
|
if (lg.EditItems(leaves.ToArray()))
|
|
|
+ {
|
|
|
+ Progress.ShowModal("Checking Forms...", progress =>
|
|
|
+ {
|
|
|
+ List<LeaveRequestForm> updates = new List<LeaveRequestForm>();
|
|
|
+ var table = new Client<ActivityForm>().Query(
|
|
|
+ new Filter<ActivityForm>(x => x.Activity.ID).IsEqualTo(leaves.First().LeaveType.ID)
|
|
|
+ .And(x => x.Form.AppliesTo)
|
|
|
+ .IsEqualTo(typeof(LeaveRequest).EntityName().Split('.').Last())
|
|
|
+ );
|
|
|
+ foreach (var leave in leaves)
|
|
|
+ {
|
|
|
+ foreach (var row in table.Rows)
|
|
|
+ {
|
|
|
+ var activityform = row.ToObject<ActivityForm>();
|
|
|
+ var leaveform = new LeaveRequestForm();
|
|
|
+ leaveform.Parent.ID = leave.ID;
|
|
|
+ leaveform.Form.ID = activityform.Form.ID;
|
|
|
+ leaveform.Form.Synchronise(activityform.Form);
|
|
|
+
|
|
|
+ var model =
|
|
|
+ new DigitalFormDataModel<LeaveRequest, LeaveRequestLink, LeaveRequestForm>(leave,
|
|
|
+ leaveform);
|
|
|
+ leaveform.Description = model.EvaluateExpression(activityform.Form.DescriptionExpression) ?? activityform.Form.Description;
|
|
|
+ updates.Add(leaveform);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (updates.Any())
|
|
|
+ {
|
|
|
+ progress.Report("Saving forms...");
|
|
|
+ new Client<LeaveRequestForm>().Save(updates, "Created from Leave Calendar");
|
|
|
+ }
|
|
|
+ });
|
|
|
Refresh();
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private void CreateStandardLeaveClick(object sender, RoutedEventArgs e)
|
|
|
{
|