Esempio n. 1
0
 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());
     }
 }
Esempio n. 2
0
        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());
            }
        }
Esempio n. 3
0
        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
            });
        }
Esempio n. 4
0
        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]);
                    }
                }
            }
        }