public IHttpActionResult CreateTemplate(RequestTemplate Request) { try { DAL.Models.Template template = new DAL.Models.Template(); template.Wassaya_Template = Request.wassaya; db.Templates.Add(template); db.SaveChanges(); return(Ok(template)); } catch (Exception e) { return(InternalServerError()); } }
public IHttpActionResult GetTemplate(int id) { try { DAL.Models.Template template = db.Templates.Find(id); if (template == null) { return(NotFound()); } return(Ok(template.Wassaya_Template)); } catch (Exception e) { return(InternalServerError()); } }
public ActionResult Execute(UI.Action action) { Parameter templateParam = action.Parameters.FirstOrDefault(p => p.ParameterType == ParameterType.TemplateId); if (templateParam == null) { throw new CustomValidationException($"There is no TemplateId parameter for action DeleteDocument."); } int templateId = Convert.ToInt32(templateParam.DefaultValue); DAL.Models.Template templateDef = DbEditorService.GetTemplate(templateId); DbDocumentService.UpdateDocumentToDeleted(templateDef.Name, action.DocId.Value); return(new ActionResult() { ActionType = action.ActionType, Success = true }); }
private static void FillValues(UI.Action action, DAL.Models.Template templateDef, Dictionary <DAL.Models.Field, object> values) { List <Parameter> copyParameters = action.Parameters .FindAll(p => p.ParameterType == UI.ParameterType.CopyValueFrom || p.ParameterType == UI.ParameterType.CopyValueTo); if (copyParameters.Count > 0) { if (!copyParameters.All(p => p.Props.ContainsKey("Name") && !string.IsNullOrEmpty((string)p.Props["Name"]))) { throw new CustomValidationException($"All CopyParameters have to contain a Name property. ActionId={action.Definition.Id}"); } if (!copyParameters.Where(p => p.ParameterType == ParameterType.CopyValueTo).All(p => p.Props.ContainsKey("FieldId"))) { throw new CustomValidationException($"All CopyParameters.Destination have to contain a FieldId property. ActionId={action.Definition.Id}"); } // Создаем набор параметров из списка двух типов параметров List <Incoming.CopyFieldParameter> prms = copyParameters.GroupBy(p => (string)p.Props["Name"]).Select(g => { if (g.Count() != 2) { throw new CustomValidationException($"There is no pair for parameter: {g.Key}"); } Parameter paramFrom = g.FirstOrDefault(p => p.ParameterType == ParameterType.CopyValueFrom); Parameter paramTo = g.FirstOrDefault(p => p.ParameterType == ParameterType.CopyValueTo); paramFrom.Props.Where(p => p.Value == null).ToList().ForEach(p => paramFrom.Props.Remove(p.Key)); paramTo.Props.Where(p => p.Value == null).ToList().ForEach(p => paramTo.Props.Remove(p.Key)); int fieldFromId = paramFrom.Props.ContainsKey("FieldId") ? Convert.ToInt32(paramFrom.Props["FieldId"]) : 0; int fieldToId = paramTo.Props.ContainsKey("FieldId") ? Convert.ToInt32(paramTo.Props["FieldId"]) : 0; Incoming.CopyFieldParameter paramCopy = new Incoming.CopyFieldParameter() { DefaultValue = paramFrom.DefaultValue, FieldFromId = fieldFromId, FieldToId = fieldToId }; return(paramCopy); }).ToList(); // Заполняем значениями по умолчанию foreach (var param in prms.Where(p => p.FieldToId > 0 && p.DefaultValue != null)) { DAL.Models.Field templateDefField = templateDef.Fields.FirstOrDefault(f => f.Id == param.FieldToId); if (templateDefField == null) { throw new CustomValidationException($"Destination template missing field id={param.FieldToId}."); } values.Add(templateDefField, param.DefaultValue); } // Заполняем значениями документа из которого был создан новый документ // Определяем шаблон источника int fieldId = prms.FirstOrDefault(p => p.FieldFromId > 0)?.FieldFromId ?? 0; if (fieldId > 0) { DbEditorService editor = new DbEditorService(); DAL.Models.Field field = editor.GetField(fieldId); DAL.Models.Template templateDefFrom = DbEditorService.GetTemplate(field.TemplateId); int parentDocId = Convert.ToInt32(action.DocId); Dictionary <string, object> documentFrom = DbDocumentService.GetDocument(templateDefFrom.Name, parentDocId); foreach (var param in prms.Where(p => p.FieldFromId > 0)) { DAL.Models.Field fieldFrom = templateDefFrom.Fields.FirstOrDefault(f => f.Id == param.FieldFromId); DAL.Models.Field fieldTo = templateDef.Fields.FirstOrDefault(f => f.Id == param.FieldToId); values.Add(fieldTo, documentFrom[fieldFrom.Name]); } } } }