Ejemplo n.º 1
0
 public void CreateNewCategory(CategoryDetails item)
 {
     try
     {
         db.BeginTransaction();
         Category category = new Category();
         category.Name        = item.Name;
         category.Description = item.Description;
         category.IconId      = item.IconId;
         category.CreatedOn   = item.CreatedOn;
         category.Status      = "Active";
         int    id = Convert.ToInt32(db.Insert("Category", "Id", true, category));
         Fields fields;
         foreach (var field in item.FieldList)
         {
             fields            = new Fields();
             fields.CategoryId = id;
             fields.Name       = field.Name;
             fields.DataType   = field.DataType;
             fields.Mandatory  = field.Mandatory;
             fields.Position   = field.Position;
             db.Insert("Fields", "Id", true, fields);
         }
         db.CompleteTransaction();
     }
     catch (Exception)
     {
         db.AbortTransaction();
     }
 }
Ejemplo n.º 2
0
 public void Dispose()
 {
     if (_db != null)
     {
         _db.AbortTransaction();
     }
 }
Ejemplo n.º 3
0
        public void RunDeploymentScript(DeploymentScript script)
        {
            try
            {
                if (_db.Exists <MigrationHistory>(script.Name))
                {
                    Log.Debug($"Migration {script.Name} has already been executed");
                    return;
                }

                Log.Info($"Processing migration {script.Name}");

                _db.BeginTransaction();

                var migration = new MigrationHistory
                {
                    ScriptName    = script.Name,
                    Completed     = false,
                    DateProcessed = DateTime.Now
                };

                _db.Insert(migration);
                _db.CompleteTransaction();

                _db.Execute(script.Sql);
                migration.Completed = true;
                _db.Save(migration);
            }
            catch (Exception ex)
            {
                _db.AbortTransaction();
                Log.Error($"Failed to run deployment migration {script.Name}", ex);
                throw;
            }
        }
            private void EndSession(bool isException, bool modelstateValid)
            {
                if (wasBound)
                {
                    if (isException || !modelstateValid)
                    {
                        _database.AbortTransaction();
                    }
                    else
                    {
                        _database.CompleteTransaction();
                    }

                    wasUnBound = false;
                }
            }
Ejemplo n.º 5
0
        /// <summary>
        /// 删除ApiInterfaceInfo
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public int DeleteApi(ApiInterfaceInfo info)
        {
            int rows = 0;

            try
            {
                db.BeginTransaction();

                rows += db.Delete <RequestBodyInfo>("WHERE `RelationSID` = @0", info.SID);
                rows += db.Delete <ResponseBodyInfo>("WHERE `RelationSID` = @0", info.SID);
                rows += db.Delete <ApiInterfaceInfo>("WHERE `SID` = @0", info.SID);

                db.CompleteTransaction();
            }
            catch (Exception e)
            {
                db.AbortTransaction();
            }
            return(rows);
        }
Ejemplo n.º 6
0
        public CourtModule()
        {
            this.RequiresAuthentication();

            _database = Global.Database;

            Get["/courts"] = parameters =>
            {
                return(View["View/update_courts.sshtml", new PartyModel <UpdateCourtModel>(_database.Query <Court>().Select(c => new UpdateCourtModel(_database, c)).OrderBy(c => c.Name))]);
            };

            Get["/court/{id}"] = parameters =>
            {
                string idString = parameters.id;
                Guid   id;

                if (Guid.TryParse(idString, out id))
                {
                    this.RequiresAnyClaim("admin", idString);

                    var court = _database.Query <Court>(id);

                    if (court == null)
                    {
                        Global.Log.Warning("Unknown court at update");
                        return(Response.AsRedirect("/error/unknownobject"));
                    }
                    else if (court.Substitute != null)
                    {
                        return(View["View/substituted_court.sshtml", new PublicCourtModel(court)]);
                    }
                    else
                    {
                        return(View["View/update_court.sshtml", new UpdateCourtModel(_database, court)]);
                    }
                }
                else
                {
                    Global.Log.Warning("Bad uid at update");
                    return(Response.AsRedirect("/error/unknownobject"));
                }
            };

            Post["/court/{id}"] = parameters =>
            {
                var    updateCourt  = this.Bind <UpdateCourtModel>();
                var    updateJudges = this.Bind <List <JudgeModel> >();
                string idString     = parameters.id;
                Guid   id;

                if (Guid.TryParse(idString, out id))
                {
                    this.RequiresAnyClaim("admin", idString);

                    _database.BeginTransaction();
                    try
                    {
                        var currentCourt = _database.Query <Court>(id);

                        if (currentCourt == null)
                        {
                            Global.Log.Warning("Unknown court at update");
                            return(Response.AsRedirect("/error/unknownobject"));
                        }
                        else if (currentCourt.Substitute != null)
                        {
                            return(Response.AsRedirect("/court/" + idString));
                        }
                        else
                        {
                            updateCourt.Update(_database, currentCourt, updateJudges);
                            currentCourt.LastUpdate = DateTime.Now;
                            _database.Update(currentCourt);
                        }

                        _database.CommitTransaction();

                        Global.Log.Notice("Update of " + currentCourt.Name + " by " + this.Context.CurrentUser.UserName);
                        Global.Mail.SendAdmin("[PJS] Update", "Update of " + currentCourt.Name + " by " + this.Context.CurrentUser.UserName);

                        return(Response.AsRedirect("/court/updated"));
                    }
                    catch (Exception exception)
                    {
                        Global.Log.Error(exception.ToString());
                        _database.AbortTransaction();
                        throw;
                    }
                }
                else
                {
                    Global.Log.Warning("Bad uid at update");
                    return(Response.AsRedirect("/error/unknownobject"));
                }
            };

            Get["/court/updated"] = parameters =>
            {
                return(View["View/updated.sshtml"]);
            };
        }
Ejemplo n.º 7
0
        public static ReturnResult <Model> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log)
        {
            var dataFilePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            try
            {
                db.BeginTransaction();

                MLContext context = new MLContext();

                TrainInput input = null;

                using (StreamReader reader = new StreamReader(req.Body))
                {
                    input = JsonConvert.DeserializeObject <TrainInput>(reader.ReadToEnd());
                }

                File.WriteAllText(dataFilePath, input.Data);

                IDataView LoadedData = null;

                var columnData = new List <TextLoader.Column>();
                foreach (var c in input.Columns)
                {
                    //data type 1 is for ignore
                    if (c.Type != 1)
                    {
                        var newColData = new TextLoader.Column()
                        {
                            DataKind = (DataKind)c.Type,
                            Name     = c.ColumnName,
                            Source   = new TextLoader.Range[] { new TextLoader.Range(c.ColumnIndex) }
                        };

                        columnData.Add(newColData);
                    }
                }

                LoadedData = context.Data.LoadFromTextFile(
                    dataFilePath,
                    columnData.ToArray(),
                    separatorChar: input.Separator,
                    hasHeader: input.HasHeaders,
                    allowQuoting: true
                    );

                LoadedData = context.Data.ShuffleRows(LoadedData);

                /*
                 * Multiclass will be used in the case of binary experiments and multiclass experiments.
                 * This is because multiclass can accept all types as an output column. This will
                 * allow less interaction with the user and a better user experience.
                 */

                double       bestRunMetric = 0;
                ITransformer bestModel     = null;

                if (input.ModelType == TrainInput.ModelTypes.Multiclass)
                {
                    ExperimentResult <MulticlassClassificationMetrics> Results = null;
                    var settings = new MulticlassExperimentSettings()
                    {
                        MaxExperimentTimeInSeconds = 20
                    };
                    var training = context.Auto().CreateMulticlassClassificationExperiment(settings);
                    Results       = training.Execute(LoadedData, labelColumnName: input.LabelColumn);
                    bestRunMetric = Results.BestRun.ValidationMetrics.MacroAccuracy;
                    bestModel     = Results.BestRun.Model;
                }
                else if (input.ModelType == TrainInput.ModelTypes.Binary)
                {
                    ExperimentResult <BinaryClassificationMetrics> Results = null;
                    var settings = new BinaryExperimentSettings()
                    {
                        MaxExperimentTimeInSeconds = 20
                    };
                    var training = context.Auto().CreateBinaryClassificationExperiment(settings);
                    Results       = training.Execute(LoadedData, labelColumnName: input.LabelColumn);
                    bestRunMetric = Results.BestRun.ValidationMetrics.Accuracy;
                    bestModel     = Results.BestRun.Model;
                }
                else if (input.ModelType == TrainInput.ModelTypes.Regression)
                {
                    ExperimentResult <RegressionMetrics> Results = null;
                    var settings = new RegressionExperimentSettings()
                    {
                        MaxExperimentTimeInSeconds = 20
                    };
                    var training = context.Auto().CreateRegressionExperiment(settings);
                    Results       = training.Execute(LoadedData, labelColumnName: input.LabelColumn);
                    bestRunMetric = Results.BestRun.ValidationMetrics.RSquared;
                    bestModel     = Results.BestRun.Model;
                    if (bestRunMetric < 0)
                    {
                        bestRunMetric = 0;
                    }
                }
                else
                {
                    throw new Exception("Invalid model type");
                }


                var modelFileId = 0;

                using (MemoryStream ms = new MemoryStream())
                {
                    context.Model.Save(bestModel, LoadedData.Schema, ms);
                    //Save model to the database
                    FileStore modelSave = new FileStore()
                    {
                        Data = ms.ToArray()
                    };

                    modelFileId = FileStore.InsertUpdate(db, modelSave).Item.FileStoreId;
                }

                var resultModel = new Model()
                {
                    FileStoreId = modelFileId,
                    Accuracy    = bestRunMetric,
                    Rows        = input.Data.Trim().Split('\n').Length
                };

                db.CompleteTransaction();

                return(new ReturnResult <Model>()
                {
                    Success = true,
                    Item = resultModel
                });
            }
            catch (Exception e)
            {
                db.AbortTransaction();
                log.LogError(e.Message);
                return(new ReturnResult <Model>()
                {
                    Success = false,
                    Exception = e
                });
            }
        }
        public AdminModule()
        {
            this.RequiresAuthentication();
            this.RequiresClaims("admin");

            _database = Global.Database;

            Get["/admin"] = parameters =>
            {
                return(Response.AsRedirect("/admin/courts"));
            };

            Get["/admin/courts"] = parameters =>
            {
                return(View["View/admin_courts.sshtml", new PartyModel <AdminCourtModel>(_database.Query <Court>().Select(c => new AdminCourtModel(_database, c)).OrderBy(c => c.Name))]);
            };

            Get["/admin/court/{id}"] = parameters =>
            {
                string idString = parameters.id;
                Guid   id;

                if (Guid.TryParse(idString, out id))
                {
                    var court = _database.Query <Court>(id);

                    if (court == null)
                    {
                        Global.Log.Warning("Unknown court at admin view");
                        return(Response.AsRedirect("/error/unknownobject"));
                    }
                    else
                    {
                        return(View["View/admin_court.sshtml", new AdminCourtModel(_database, court)]);
                    }
                }
                else if (idString == "new")
                {
                    return(View["View/admin_court.sshtml", new AdminCourtModel()]);
                }
                else
                {
                    Global.Log.Warning("Bad uid at admin view");
                    return(Response.AsRedirect("/error/unknownobject"));
                }
            };

            Post["/admin/court/{id}"] = parameters =>
            {
                var    updateCourt  = this.Bind <AdminCourtModel>();
                var    updateJudges = this.Bind <List <JudgeModel> >();
                string idString     = parameters.id;
                Guid   id;

                if (Guid.TryParse(idString, out id))
                {
                    _database.BeginTransaction();

                    try
                    {
                        var currentCourt = _database.Query <Court>(id);

                        if (currentCourt == null)
                        {
                            currentCourt = new Court(id);
                            updateCourt.Update(_database, currentCourt, updateJudges);
                            _database.Insert(currentCourt);
                        }
                        else
                        {
                            updateCourt.Update(_database, currentCourt, updateJudges);
                            _database.Update(currentCourt);
                        }

                        _database.CommitTransaction();
                    }
                    catch
                    {
                        _database.AbortTransaction();
                        throw;
                    }

                    Global.Log.Notice("Update of " + updateCourt.Name + " by admin");
                    Global.Mail.SendAdmin("[PJS] Admin Update", "Update of " + updateCourt.Name + " by admin");

                    return(Response.AsRedirect("/admin/courts"));
                }
                else
                {
                    Global.Log.Warning("Bad uid at admin update");
                    return(Response.AsRedirect("/error/unknownobject"));
                }
            };
        }
Ejemplo n.º 9
0
 public void Rollback()
 {
     _db.AbortTransaction();
 }