protected override void RunDelete(string name, MEDMSql model, XmlNode xrequest, XmlNode xresponse) { MEDMDefClass dc = MEDMDefModel.MainDef.Find(name); if (dc != null) { if (dc.BaseClass == "MEDMObj") { Type t = dc.GetClassType(); if (t != null) { string id = XFunc.GetAttr(xrequest, "id", ""); if (id == "") { throw new Exception("В параметрах запроса отсутствует id"); } MEDMObj obj = model.MainDic.GetObj(t, id); if (obj == null) { throw new Exception($"Не удалось создать объект типа {t}. Удаление невозможно."); } model.DeleteObject(obj); model.Save(Session); } } else { throw new Exception($"Для автоматической генерации Delete класс источника данных {name} должен быть порожден от MEDMObj"); } } }
protected override void RunAppend(string name, MEDMSql model, XmlNode xrequest, XmlNode xresponse) { MEDMDefClass dc = MEDMDefModel.MainDef.Find(name); if (dc != null) { if (dc.BaseClass == "MEDMObj") { Type t = dc.GetClassType(); if (t != null) { FilterParamList l = new FilterParamList(dc, xrequest); MEDMObj obj = model.CreateObject(t, null); model.Save(Session); foreach (FilterParam fp in l) { obj.SetValue(fp.Name, fp.Value); } model.Save(Session); if (obj != null) { XmlNode xrow = RefreshRow(name, obj.GetId(), model, xrequest, xresponse); if (xrow != null) { XFunc.SetAttr(xrow, "row.destmode", "after"); XFunc.SetAttr(xrow, "row.destid", XFunc.GetAttr(xrequest, "id", "")); } } } } else { throw new Exception($"Для автоматической генерации Append класс источника данных {name} должен быть порожден от MEDMObj"); } } }
protected override void RunSave(string name, MEDMSql model, XmlNode xrequest, XmlNode xresponse) { MEDMDefClass dc = MEDMDefModel.MainDef.Find(name); if (dc != null) { if (dc.BaseClass == "MEDMObj") { Type t = dc.GetClassType(); if (t != null) { string id = XFunc.GetAttr(xrequest, "id", ""); if (id == "") { throw new Exception("В параметрах запроса отсутствует id"); } MEDMObj obj = model.MainDic.GetObj(t, id); if (obj == null) { throw new Exception($"Не удалось создать объект типа {t}. Сохранить изменения невозможно."); } foreach (XmlNode xparam in xrequest.ChildNodes) { if (xparam.Name == "param") { obj.SetStringValue(XFunc.GetAttr(xparam, "name", ""), xparam.InnerText); } } model.Save(Session); RefreshRow(name, id, model, xrequest, xresponse); } } else { throw new Exception($"Для автоматической генерации Save класс источника данных {name} должен быть порожден от MEDMObj"); } } }