| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | using System;using System.Collections.Generic;using System.Linq;using Comal.Classes;using InABox.Core;namespace Comal.Stores{    internal class AssignmentStore : BaseStore<Assignment>    {        private void CheckActivityForms(Assignment assignment)        {            if (!assignment.ActivityLink.HasOriginalValue(x => x.ID))            {                return;            }            List<AssignmentForm> assignmentForms;            if(assignment.ID != Guid.Empty)            {                assignmentForms = Provider.Query(                    new Filter<AssignmentForm>(x => x.Parent.ID).IsEqualTo(assignment.ID),                    new Columns<AssignmentForm>(x => x.ID, x => x.FormData)                ).Rows.Select(x => x.ToObject<AssignmentForm>()).ToList();            }            else            {                assignmentForms = new();            }            var toDelete = assignmentForms.Where(x => string.IsNullOrWhiteSpace(x.FormData));            Provider.Delete(toDelete, UserID);            var activityForms = Provider.Query(                new Filter<ActivityForm>(x => x.Activity.ID).IsEqualTo(assignment.ActivityLink.ID)                    .And(x => x.Form.AppliesTo).IsEqualTo(nameof(Assignment)));            var newForms = new List<AssignmentForm>();            foreach (var row in activityForms.Rows)            {                var formID = row.Get<ActivityForm, Guid>(x => x.Form.ID);                if (!(assignmentForms.Any(x => x.Form.ID == formID) && !toDelete.Any(x => x.Form.ID == formID)))                {                    var assignmentForm = new AssignmentForm();                    assignmentForm.Form.ID = formID;                    assignmentForm.Parent.ID = assignment.ID;                    newForms.Add(assignmentForm);                }            }            Provider.Save(newForms);        }        protected override void AfterSave(Assignment entity)        {            base.AfterSave(entity);            CheckActivityForms(entity);        }            }}
 |