/// <summary>
        /// procedure_spec :
        ///     PROCEDURE identifier(LEFT_PAREN parameter (COMMA parameter ) * RIGHT_PAREN)? ';'
        ///     ;
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override object VisitProcedure_spec([NotNull] PlSqlParser.Procedure_specContext context)
        {
            if (context.exception != null)
            {
                AppendException(context.exception);
                return(null);
            }

            string procName = context.identifier().GetCleanedTexts().Join();

            var method = new ProcedureModel()
            {
                Name       = procName,
                IsFunction = false,
                // Description = "",
            };

            AppendFile(method, context.Start);
            method.Code.SetSource(GetText(context));

            var parameters = context.parameter();

            foreach (var parameter in parameters)
            {
                var arg = (ArgumentModel)VisitParameter(parameter);
                arg.Key = method.Arguments.Count().ToString();
                method.Arguments.Add(arg);
            }

            Append(method);

            return(method);
        }
Beispiel #2
0
        private string GenerateIdentifierName(Procedure procedure, ProcedureModel model)
        {
            if (procedure == null)
            {
                throw new ArgumentNullException(nameof(procedure));
            }

            var name = GenerateUniqueName(procedure, model);

            var isValid = System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(name);

            if (!isValid)
            {
                // File name contains invalid chars, remove them
                var regex = new Regex(@"[^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Nl}\p{Mn}\p{Mc}\p{Cf}\p{Pc}\p{Lm}]", RegexOptions.None, TimeSpan.FromSeconds(5));
                name = regex.Replace(name, "");

                // Class name doesn't begin with a letter, insert an underscore
                if (!char.IsLetter(name, 0))
                {
                    name = name.Insert(0, "_");
                }
            }

            return(name.Replace(" ", string.Empty));
        }
Beispiel #3
0
        public async Task <IActionResult> PutProcedureModel(int id, ProcedureModel procedureModel)
        {
            if (id != procedureModel.ProcedureId)
            {
                return(BadRequest());
            }

            _context.Entry(procedureModel).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProcedureModelExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Beispiel #4
0
        public async Task <ActionResult <ProcedureModel> > PostProcedureModel(ProcedureModel procedureModel)
        {
            _context.ProcedureModel.Add(procedureModel);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetProcedureModel", new { id = procedureModel.ProcedureId }, procedureModel));
        }
        public ScaffoldedModel ScaffoldModel(ProcedureModel model, ModuleScaffolderOptions procedureScaffolderOptions, ref List <string> errors)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var result = new ScaffoldedModel();

            errors = model.Errors;

            foreach (var procedure in model.Procedures)
            {
                var name = GenerateIdentifierName(procedure, model) + "Result";

                var classContent = WriteResultClass(procedure, procedureScaffolderOptions, name);

                result.AdditionalFiles.Add(new ScaffoldedFile
                {
                    Code = classContent,
                    Path = $"{name}.cs",
                });
            }

            var dbContext = WriteProcedureDbContext(procedureScaffolderOptions, model);

            result.ContextFile = new ScaffoldedFile
            {
                Code = dbContext,
                Path = Path.GetFullPath(Path.Combine(procedureScaffolderOptions.ContextDir, procedureScaffolderOptions.ContextName + "Procedures.cs")),
            };

            return(result);
        }
Beispiel #6
0
        public async Task <IActionResult> Edit(int id, [Bind("ProcedureModelName,ProcedureModelName")] ProcedureModel procedureModel)
        {
            if (id != procedureModel.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(procedureModel);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProcedureModelExists(procedureModel.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(procedureModel));
        }
Beispiel #7
0
 void IOracleModelVisitor.VisitProcedure(ProcedureModel item)
 {
     if (this._filter(item))
     {
         _items.Add(item);
     }
 }
        private void CreateComponent(ProcedureModel ptProcedureModel, ClinicalDocument clinicalDoc, III hl7III)
        {
            hl7Body          = clinicalDoc.Component.AsStructuredBody;
            functionalStatus = hl7Body.Component.Append();
            hl7III           = functionalStatus.Section.TemplateId.Append();
            if (ptProcedureModel.root != null)
            {
                hl7III.Init(ptProcedureModel.root);
            }

            if (ptProcedureModel.code != null)
            {
                functionalStatus.Section.Code.Code = ptProcedureModel.code;
            }

            if (ptProcedureModel.codeSystem != null)
            {
                functionalStatus.Section.Code.CodeSystem = ptProcedureModel.codeSystem;
            }

            if (ptProcedureModel.codeSystemName != null)
            {
                functionalStatus.Section.Code.CodeSystemName = ptProcedureModel.codeSystemName;
            }

            if (ptProcedureModel.displayName != null)
            {
                functionalStatus.Section.Code.DisplayName = ptProcedureModel.displayName;
            }

            if (ptProcedureModel.title != null)
            {
                functionalStatus.Section.Title.Text = ptProcedureModel.title;
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            ProcedureModel procedureModel = db.ProcedureModels.Find(id);

            db.ProcedureModels.Remove(procedureModel);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public override void AppendMissing(ArgumentModel argSource, ProcedureModel source, ProcedureModel target)
 {
     if (_buckets.Add(source))
     {
         var d = base.AppendDifference(source, false);
         Append(source, d, target);
     }
 }
 public override void AppendChange(ProcedureModel source, ProcedureModel target, string propertyName)
 {
     if (_buckets.Add(source))
     {
         var d = base.AppendDifference(source, target, propertyName);
         Append(source, d, target);
     }
 }
Beispiel #12
0
        private string GenerateIdentifierName(Procedure procedure, ProcedureModel model)
        {
            if (procedure == null)
            {
                throw new ArgumentNullException(nameof(procedure));
            }

            return(CreateIdentifier(GenerateUniqueName(procedure, model)).Item1);
        }
Beispiel #13
0
        public async Task <ActionResult <int> > Put(int id, [FromBody] ProcedureModel procedureModel)
        {
            if (id != procedureModel.Id)
            {
                return(BadRequest());
            }

            return(await _procedureService.Update(procedureModel));
        }
        public ProcedureModel Create(string connectionString)
        {
            var model = new ProcedureModel
            {
                Procedures = GetStoredProcedures(connectionString)
            };

            return(model);
        }
 public ActionResult Edit([Bind(Include = "Id,Name,Details")] ProcedureModel procedureModel)
 {
     if (ModelState.IsValid)
     {
         db.Entry(procedureModel).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(procedureModel));
 }
Beispiel #16
0
        public virtual void AppendMissing(ProcedureModel source)
        {
            AppendDifference(source, false);

            if (generateSource)
            {
                string p = BuildPath(Path.Combine(this.folderForSource, source.Owner), "Procedures", source.Name);
                WriteFile(p, CreateOrReplace + source.Code.GetSource());
            }
        }
Beispiel #17
0
        public override List <ModelProc_11> Resolve(DbContextOracle context, Action <ModelProc_11> action)
        {
            List <ModelProc_11> List = new List <ModelProc_11>();
            string colName           = string.Empty;
            var    db = context.Database;

            this.OracleContext = context;

            HashSet <object> _h = new HashSet <object>();

            if (action == null)
            {
                action =
                    t =>
                {
                    ProcedureModel proc = null;

                    if (t.OBJECT_NAME.ExcludIfStartwith(t.OWNER, Models.Configurations.ExcludeKindEnum.Procedure))
                    {
                        return;
                    }

                    if (t.OBJECT_NAME == t.PROCEDURE_NAME)
                    {
                        return;
                    }

                    proc = new ProcedureModel()
                    {
                        Owner       = t.OWNER,
                        PackageName = string.IsNullOrEmpty(t.PROCEDURE_NAME) ? string.Empty : t.OBJECT_NAME,
                        Name        = string.IsNullOrEmpty(t.PROCEDURE_NAME) ? t.OBJECT_NAME : t.PROCEDURE_NAME,
                        IsFunction  = false,
                    };
                    proc.Key = proc.BuildKey();

                    if (!db.Procedures.Contains(proc.Key))
                    {
                        db.Procedures.Add(proc);
                    }
                }
            }
            ;

            sql = string.Format(sql, TableQueryAndCondition());
            ProcDescriptor_11 view = new ProcDescriptor_11(context.Manager.ConnectionString);

            using (var reader = context.Manager.ExecuteReader(CommandType.Text, sql, QueryBase.DbParams.ToArray()))
            {
                view.ReadAll(reader, action).ToList();
            }

            return(List);
        }
    }
        public ActionResult Create([Bind(Include = "Id,Name,Details")] ProcedureModel procedureModel)
        {
            if (ModelState.IsValid)
            {
                db.ProcedureModels.Add(procedureModel);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(procedureModel));
        }
        public ProcedureModel Create(string connectionString, ProcedureModelFactoryOptions options)
        {
            //TODO Filter based on options later

            var model = new ProcedureModel
            {
                Procedures = GetStoredProcedures(connectionString)
            };

            return(model);
        }
Beispiel #20
0
        private string GenerateUniqueName(Procedure procedure, ProcedureModel model)
        {
            var numberOfNames = model.Procedures.Where(p => p.Name == procedure.Name).Count();

            if (numberOfNames > 1)
            {
                return(procedure.Name + CultureInfo.InvariantCulture.TextInfo.ToTitleCase(procedure.Schema));
            }

            return(procedure.Name);
        }
Beispiel #21
0
        public async Task <IActionResult> Create([Bind("ProcedureModelName,ProcedureModelName")] ProcedureModel procedureModel)
        {
            if (ModelState.IsValid)
            {
                _context.Add(procedureModel);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(procedureModel));
        }
Beispiel #22
0
        protected override ProcedureModel MapProcedure(DataRow row)
        {
            var procedure = new ProcedureModel();

            procedure.RoutineCatalog = row.GetString("ROUTINE_CATALOG");
            procedure.RoutineSchema  = row.GetString("ROUTINE_SCHEMA");
            procedure.RoutineName    = row.GetString("ROUTINE_NAME");
            procedure.RoutineType    = row.GetString("ROUTINE_TYPE");
            procedure.Created        = row.GetDateTime("CREATED");
            procedure.LastAltered    = row.GetDateTime("LAST_ALTERED");

            return(procedure);
        }
        // GET: Procedure/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProcedureModel procedureModel = db.ProcedureModels.Find(id);

            if (procedureModel == null)
            {
                return(HttpNotFound());
            }
            return(View(procedureModel));
        }
        // GET: Doctor/AddProcedure
        public ActionResult AddProcedure(int doctorId, string procedureName)
        {
            DoctorModel    doctor    = db.DoctorModels.Find(doctorId);
            ProcedureModel procedure = db.ProcedureModels.SingleOrDefault(x => x.Name == procedureName);

            DoctorsAndProceduresModel model = new DoctorsAndProceduresModel()
            {
                Doctor    = doctor,
                Procedure = procedure
            };

            db.DoctorsAndProceduresModel.Add(model);
            db.SaveChanges();

            return(RedirectToAction("Details", new { Id = doctorId }));
        }
Beispiel #25
0
        public virtual void AppendChange(ProcedureModel source, ProcedureModel target, string propertyName)
        {
            AppendDifference(source, target, propertyName);

            if (generateSource)
            {
                string p = BuildPath(Path.Combine(this.folderForSource, source.Owner), "Procedures", source.Name);
                WriteFile(p, CreateOrReplace + source.Code.GetSource());
            }

            if (generateTarget)
            {
                string p = BuildPath(Path.Combine(this.folderForTarget, target.Owner), "Procedures", target.Name);
                WriteFile(p, CreateOrReplace + target.Code.GetSource());
            }
        }
        private void Append(ProcedureModel source, DifferenceModel d, ProcedureModel target)
        {
            string        p  = BuildPath(Path.Combine(this.folderForTarget, source.Owner), "Procedures", source.Name);
            StringBuilder sb = new StringBuilder();

            if (!File.Exists(p))
            {
                var txt = CreateOrReplace + source.Code.GetSource().Trim();
                if (!txt.EndsWith(@"\"))
                {
                    txt = txt + Environment.NewLine + @"\";
                }
                sb.AppendLine(txt);

                if (sb.Length > 0)
                {
                    WriteFile(p, sb.ToString());
                    d.Addfile(p);
                }
            }

            if (target != null)
            {
                p  = BuildPath(Path.Combine(this.folderForTarget, source.Owner), "Procedures", source.Name, true);
                sb = new StringBuilder();

                if (!File.Exists(p))
                {
                    var txt = CreateOrReplace + target.Code.GetSource().Trim();
                    if (!txt.EndsWith(@"\"))
                    {
                        txt = txt + Environment.NewLine + @"\";
                    }
                    sb.AppendLine(txt);

                    if (sb.Length > 0)
                    {
                        WriteFile(p, sb.ToString());
                        d.Addfile(p);
                    }
                }
            }
        }
        /// <summary>
        /// function_spec :
        ///     FUNCTION identifier(LEFT_PAREN parameter (COMMA parameter)* RIGHT_PAREN)?
        ///     RETURN type_spec(DETERMINISTIC)? (RESULT_CACHE)? ';'
        ///     ;
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override object VisitFunction_spec([NotNull] PlSqlParser.Function_specContext context)
        {
            if (context.exception != null)
            {
                AppendException(context.exception);
                return(null);
            }

            string funcName = context.identifier().GetCleanedTexts().Join();

            var method = new ProcedureModel()
            {
                Name       = funcName,
                IsFunction = true,
                // Description = "",
            };

            AppendFile(method, context.Start);
            method.Code.SetSource(GetText(context));

            var parameters = context.parameter();

            foreach (var parameter in parameters)
            {
                var arg = (ArgumentModel)VisitParameter(parameter);
                arg.Key = method.Arguments.Count().ToString();
                method.Arguments.Add(arg);
            }

            var type_spec  = context.type_spec();
            var returnType = (OTypeReference)VisitType_spec(type_spec);

            method.ResultType = new ProcedureResult()
            {
                Type = returnType
            };

            Append(method);
            return(method);
        }
        public string FillPatientProcedure(ClinicalDocument clinicalDoc, Factory hl7factory, III hl7III, PatientClinicalInformation patientinfo)
        {
            string clinicdetais = string.Empty;

            ptProcedureModel = new ProcedureModel();
            CreateComponent(ptProcedureModel, clinicalDoc, hl7III);// Manage Allergy Component
            //FillProcedureContent(patientinfo, hl7factory);
            int i = 0;

            if (patientinfo.ptAllergies.Count > 0)
            {
                foreach (ProcedureList item in patientinfo.ptProcedure)
                {
                    GenerateProcedureEntry(item, (i + 1), patientinfo, hl7III, hl7factory);
                }
            }
            else
            {
                GenerateProcedureEntryEmpty(hl7III, hl7factory);
            }
            return(clinicalDoc.Xml);
        }
Beispiel #29
0
        public override List <ModelProcWithArgument_11> Resolve(DbContextOracle context, Action <ModelProcWithArgument_11> action)
        {
            this.OracleContext = context;
            List <ModelProcWithArgument_11> List = new List <ModelProcWithArgument_11>();
            string colName = string.Empty;
            var    db      = context.Database;

            HashSet <object> _h = new HashSet <object>();

            if (action == null)
            {
                action =
                    t =>
                {
                    ProcedureModel proc = null;

                    if (!context.Use(t.PackageName) && !string.IsNullOrEmpty(t.Owner))
                    {
                        return;
                    }

                    if (t.ObjectName.ExcludIfStartwith(t.Owner, Models.Configurations.ExcludeKindEnum.Procedure))
                    {
                        return;
                    }

                    if (t.PackageName == t.ObjectName)
                    {
                        return;
                    }

                    string key = t.ObjectId.ToString() + ":" + t.PackageName + "::" + t.Owner + "." + t.ObjectName;

                    if (!db.Procedures.TryGet(key, out proc))
                    {
                        proc = new ProcedureModel()
                        {
                            Owner        = t.Owner,
                            SubProgramId = t.subprogram_id,
                            PackageName  = t.PackageName,
                            Name         = t.ObjectName,
                            Key          = key,
                            IsFunction   = false,
                        };

                        proc.ResultType.Type.DataType.Owner = t.TypeOwner;
                        proc.ResultType.Type.DataType.Name  = t.TypeName;

                        db.Procedures.Add(proc);
                    }

                    int index = proc.Arguments.Count;
                    colName = (!string.IsNullOrEmpty(t.ArgumentName) ? t.ArgumentName : "arg" + index.ToString());
                    OTypeReference _type = new OTypeReference();

                    if (colName != "arg0")
                    {
                        var arg = new ArgumentModel()
                        {
                            Key      = (proc.Arguments.Count + 1).ToString(),
                            Name     = colName,
                            In       = t.In,
                            Out      = t.Out,
                            Position = t.Position,
                            Sequence = t.Sequence,
                            IsValid  = true,     // !string.IsNullOrEmpty(t.ArgumentName)
                        };
                        _type = arg.Type;
                        proc.Arguments.Add(arg);
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(t.DataType))
                        {
                            var c = new ColumnModel()
                            {
                                Key      = (proc.ResultType.Columns.Count + 1).ToString(),
                                Name     = colName,
                                ColumnId = t.Position,
                            };
                            _type.DataType = c.Type;
                            proc.ResultType.Columns.Add(c);
                        }
                    }

                    if (_type != null)
                    {
                        _type.DataType.DataDefault = t.DataDefault != null?t.DataDefault.ToString()?.Trim() : string.Empty;

                        _type.DataType.DataLength    = t.DataLength;
                        _type.DataType.DataPrecision = t.DataPrecision;
                        _type.DataType.Name          = t.DataType;
                        _type.DataType.defaultLength = t.DefaultLength;
                        _type.DataType.DataLevel     = t.Data_Level;
                        _type.DataType.Owner         = t.TypeOwner;
                        _type.DataType.Name          = t.TypeName;

                        if (_type.DataType.Name != null)
                        {
                            _type.DataType.DbType = TypeMatchExtension.ConvertToDbType(t.DataType).ToString();

                            if (t.DataType.StartsWith("PL/SQL"))
                            {
                                _type.DataType.IsRecord = t.DataType == "PL/SQL RECORD";
                            }

                            else if (_type.DataType.Name == "TABLE")
                            {
                                _type.DataType.IsRecord = true;
                            }


                            //TODO : Recopier le nom du type dans le path
                        }
                    }

                    proc.IsFunction = proc.ResultType.Columns.Count > 0 && (proc.ResultType.Columns.OfType <ColumnModel>().Count(col => col.Name == "arg0") == proc.ResultType.Columns.Count);
                }
            }
            ;

            string _sql = string.Format(sql, ProcQueryWhereCondition);
            ProcDescriptorWithArgument_11 view = new ProcDescriptorWithArgument_11(context.Manager.ConnectionString);

            using (var reader = context.Manager.ExecuteReader(CommandType.Text, _sql, QueryBase.DbParams.ToArray()))
            {
                List = view.ReadAll(reader, action).ToList();
            }

            return(List);
        }
    }
        private string WriteProcedureDbContext(ProcedureScaffolderOptions procedureScaffolderOptions, ProcedureModel model)
        {
            _sb = new IndentedStringBuilder();

            _sb.AppendLine(PathHelper.Header);

            _sb.AppendLine("using Microsoft.EntityFrameworkCore;");
            _sb.AppendLine("using Microsoft.Data.SqlClient;");
            _sb.AppendLine("using System;");
            _sb.AppendLine("using System.Data;");
            _sb.AppendLine("using System.Threading.Tasks;");
            _sb.AppendLine($"using {procedureScaffolderOptions.ModelNamespace};");

            _sb.AppendLine();
            _sb.AppendLine($"namespace {procedureScaffolderOptions.ContextNamespace}");
            _sb.AppendLine("{");

            using (_sb.Indent())
            {
                _sb.AppendLine($"public partial class {procedureScaffolderOptions.ContextName}Procedures");

                _sb.AppendLine("{");

                using (_sb.Indent())
                {
                    _sb.AppendLine($"private readonly {procedureScaffolderOptions.ContextName} _context;");
                    _sb.AppendLine();
                    _sb.AppendLine($"public {procedureScaffolderOptions.ContextName}Procedures({procedureScaffolderOptions.ContextName} context)");
                    _sb.AppendLine("{");

                    using (_sb.Indent())
                    {
                        _sb.AppendLine($"_context = context;");
                    }

                    _sb.AppendLine("}");
                }

                foreach (var procedure in model.Procedures)
                {
                    GenerateProcedure(procedure);
                }

                _sb.AppendLine("}");
            }

            _sb.AppendLine("}");

            return(_sb.ToString());
        }