Ejemplo n.º 1
0
    public override void Begin(ContextBase context)
    {
		m_entryAction = context.ActionOnEnter;
		m_levelToLoad = context.Level;

        Game.Instance.LoadLevel("Game");
    }
Ejemplo n.º 2
0
	public void Restart()
	{
		ContextBase context = new ContextBase();
		context.ActionOnEnter = m_entryAction;
		context.Level = m_levelToLoad;
		Game.Instance.GameState.ChangeState(new InGameState(), context);
	}
Ejemplo n.º 3
0
	private void ReturnToEditor()
	{
		ContextBase context = new ContextBase();
		context.ActionOnEnter = ContextBase.EntryAction.GameEntry;
		context.Level = m_levelToLoad;
		Game.Instance.GameState.ChangeState(new EditorState(), context);
	}
Ejemplo n.º 4
0
	public override void Begin(ContextBase context)
	{
		m_entryAction = context.ActionOnEnter;
		m_levelToLoad = context.Level;

		Game.Instance.LoadLevel("Editor");
		m_editor = Game.Instance.UICore.Create<MapEditor>(Resources.Load("Prefabs/UI/EditorMenu") as GameObject);
	}
Ejemplo n.º 5
0
 internal Function(ContextBase parent, TypeBase argsType, TypeBase valueType = null)
     : base(parent)
 {
     _order = CodeArgs.NextOrder++;
     ArgsType = argsType;
     ValueType = valueType;
     StopByObjectIds();
 }
Ejemplo n.º 6
0
        Result ElseResult(ContextBase context, Category category)
        {
            if(Else == null)
                return context
                    .RootContext.VoidType.Result(category);

            return BranchResult(context, category, Else);
        }
Ejemplo n.º 7
0
 protected override Result Result
     (ContextBase context, Category category, Value left, Value right)
 {
     var target = context.ResultAsReference(category.Typed, left);
     return target
         .Type
         .FindRecentCompoundView
         .AccessViaPositionExpression(category, right.Result(context))
         .ReplaceArg(target);
 }
Ejemplo n.º 8
0
 protected override Result Result(ContextBase context, Category category, TerminalSyntax token)
 {
     var data = Lexer.Instance.ExtractText(token.Token);
     return context
         .RootContext.BitType.Array(BitsConst.BitSize(data[0].GetType()))
         .TextItem
         .Array(data.Length)
         .TextItem
         .Result
         (category, () => CodeBase.BitsConst(BitsConst.ConvertAsText(data)), CodeArgs.Void);
 }
Ejemplo n.º 9
0
        public override void SetUp()
        {
            base.SetUp();
            this.ExtractWorkingCopy();
            this.ExtractRepos();

            this.cmd = new LogCommand();

            this.uiShell = new MyUIShellImpl();
            this.ctx = new ContextBase( );
            this.uiShell.Context = this.ctx;
            this.ctx.UIShell = this.uiShell;
        }
Ejemplo n.º 10
0
        Result BranchResult(ContextBase context, Category category, Value syntax)
        {
            var result = context.Result(category.Typed, syntax);
            if(result == null)
                return null;

            var branchResult = result;

            var commonType = CommonType(context);
            return branchResult.Type
                .Conversion(category.Typed, commonType)
                .ReplaceArg(branchResult)
                & category;
        }
Ejemplo n.º 11
0
        Result InternalResult(ContextBase context, Category category)
        {
            var commonType = CommonType(context);
            if(category <= Category.Type.Replenished)
                return commonType.Result(category);

            var branchCategory = category & Category.Code.Replenished;
            var condResult = CondResult(context, category);
            var thenResult = ThenResult(context, branchCategory);
            var elseResult = ElseResult(context, branchCategory);
            return commonType
                .Result
                (
                    category,
                    () => condResult.Code.ThenElse(thenResult.Code, elseResult.Code),
                    () => condResult.Exts + thenResult.Exts + elseResult.Exts
                );
        }
Ejemplo n.º 12
0
        internal Result Execute
            (
            Category category,
            ResultCache left,
            Syntax token,
            ContextBase context,
            Parser.Value right)
        {
            var trace = ObjectId.In(34) && category.HasCode;
            StartMethodDump(trace, category, left, token, context, right);
            try
            {
                var metaFeature = ((IMetaImplementation) Feature).Function;
                if(metaFeature != null)
                    return metaFeature.Result(category, left, context, right);

                BreakExecution();
                var result = Feature.Result(category.Typed, token, context, right);
                Dump(nameof(result), result);
                Dump("ConverterPath.Destination.CheckedReference", ConverterPath.Destination.CheckedReference);
                Dump("ConverterPath.Execute", ConverterPath.Execute(Category.Code));
                BreakExecution();

                var replaceAbsolute = result
                    .ReplaceAbsolute
                    (ConverterPath.Destination.CheckedReference, ConverterPath.Execute);
                Dump(nameof(replaceAbsolute), replaceAbsolute);
                if(trace)
                    Dump(nameof(left), left.Code);
                BreakExecution();

                return ReturnMethodDump(replaceAbsolute.ReplaceArg(left));

            }
            finally
            {
                EndMethodDump();
            }
        }
Ejemplo n.º 13
0
 static IEnumerable<ContextBase> FunctionContexts(ContextBase context, Value body)
     => ((FunctionBodyType) context.ResultCache(body).Type)
         .Functions
         .Select(item => item.CreateSubContext(false));
Ejemplo n.º 14
0
        public async Task <bool> Transferir(int idContaCorrenteOrigem, int idContaCorrenteDestino, decimal valor)
        {
            if (valor <= 0)
            {
                throw new ApplicationException("Valor da transferência deve ser maior que zero");
            }

            if (idContaCorrenteOrigem == idContaCorrenteDestino)
            {
                throw new ApplicationException("Conta de origem não pode ser igual a de destino");
            }

            using (var data = new ContextBase(_OptionsBuilder))
            {
                var contacorrenteOrigem = await Task.Run(() => data.ContaCorrente.Include(c => c.Agencia).Where(cc => cc.Id == idContaCorrenteOrigem).FirstOrDefaultAsync());

                var contacorrenteDestino = await Task.Run(() => data.ContaCorrente.Include(c => c.Agencia).Where(cc => cc.Id == idContaCorrenteDestino).FirstOrDefaultAsync());

                if (idContaCorrenteOrigem == 0 || contacorrenteOrigem == null)
                {
                    throw new ApplicationException("Conta corrente de origem não localizada");
                }

                if (idContaCorrenteDestino == 0 || contacorrenteDestino == null)
                {
                    throw new ApplicationException("Conta corrente de destino não localizada");
                }


                bool contaOrigemPossuiSaldoSuficiente = await Task.Run(() => ObterSaldo(idContaCorrenteOrigem)) < valor;

                if (contaOrigemPossuiSaldoSuficiente)
                {
                    throw new ApplicationException("Conta de origem possui saldo insuficiente");
                }

                ContaCorrenteLancamentos contaCorrenteLancamentosOrigem = new ContaCorrenteLancamentos
                {
                    ContaCorrente  = contacorrenteOrigem,
                    DataCriacao    = DateTime.Now,
                    DataLancamento = DateTime.Now,
                    TipoLancamento = Entities.Enums.TipoLancamentoEnum.Debito,
                    Valor          = valor
                };
                await data.ContaCorrenteLancamentos.AddAsync(contaCorrenteLancamentosOrigem);

                ContaCorrenteLancamentos contaCorrenteLancamentosDestino = new ContaCorrenteLancamentos
                {
                    ContaCorrente  = contacorrenteDestino,
                    DataCriacao    = DateTime.Now,
                    DataLancamento = DateTime.Now,
                    TipoLancamento = Entities.Enums.TipoLancamentoEnum.Credito,
                    Valor          = valor
                };
                await data.ContaCorrenteLancamentos.AddAsync(contaCorrenteLancamentosDestino);

                int id = await data.SaveChangesAsync();

                return(id > 0);
            }
        }
Ejemplo n.º 15
0
 public void OnResume(ContextBase context)
 {
 }
Ejemplo n.º 16
0
 protected override Result Result
     (ContextBase context, Category category, TerminalSyntax token)
     => context.RootContext.BitType.Result(category, BitsConst.Convert(token.Id));
Ejemplo n.º 17
0
        private void ShowLabAccess()
        {
            dgAccess.DataSource = null;
            dgAccess.DataBind();

            ClientPrivilege selectedPriv = cblPriv.Items.CalculatePriv();

            if (selectedPriv == 0)
            {
                return;
            }

            if (pp1.SelectedPeriod > DateTime.Now)
            {
                return;
            }

            if (pp1.SelectedPeriod <= DateTime.Now && pp1.SelectedPeriod.AddMonths(1) > DateTime.Now && !ContextBase.Updated())
            {
                try
                {
                    // to handle missing data error
                    WriteData writeData = new WriteData(Provider);
                    writeData.UpdateTables(BillingCategory.Tool | BillingCategory.Room);
                    ContextBase.Updated(true);
                }
                catch (Exception ex)
                {
                    SendEmail.SendDebugEmail(CurrentUser.ClientID, "sselIndReports.AggSumUsage.ShowLabAccess", "An error occurred in WriteData.UpdateTables while trying to display the Aggregate User Summary Report.", ex);
                    ContextBase.Updated(false);
                }
            }

            //get all access data for period

            // [2021-04-19 jg] This report is only availabe to Administrator privilege so it doesn't make sense to filter to a single org.
            // var orgId = DBNull.Value;

            var userOrgId = Convert.ToInt32(rblUserOrg.SelectedValue);

            DataSet ds = new DataSet();

            using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnSselData"].ConnectionString))
                using (var cmd = new SqlCommand("sselData.dbo.AggUsage_Select", conn)
                {
                    CommandType = CommandType.StoredProcedure
                })
                    using (var adap = new SqlDataAdapter(cmd))
                    {
                        cmd.Parameters.AddWithValue("Period", pp1.SelectedPeriod, SqlDbType.DateTime);
                        cmd.Parameters.AddWithValue("Privs", (int)selectedPriv, SqlDbType.Int);
                        if (userOrgId >= 0)
                        {
                            cmd.Parameters.AddWithValue("SelOrg", userOrgId, SqlDbType.Int);
                        }
                        //if (CurrentUser.HasPriv(ClientPrivilege.Executive))
                        //    cmd.Parameters.AddWithValue("OrgID", orgId, SqlDbType.Int);
                        adap.Fill(ds);
                    }

            var dtRaw  = ds.Tables[0];
            var dtRoom = ds.Tables[1];

            var dtUsage = new DataTable();

            dtUsage.Columns.Add("ClientID", typeof(int));
            dtUsage.Columns.Add("DisplayName", typeof(string));
            dtUsage.Columns.Add("Manager", typeof(string));
            dtUsage.Columns.Add("URLdata", typeof(string));

            foreach (DataRow dr in dtRoom.Rows)
            {
                dtUsage.Columns.Add(EntriesColumn(dr), typeof(double));
                if (Convert.ToBoolean(dr["PassbackRoom"]))
                {
                    dtUsage.Columns.Add(HoursColumn(dr), typeof(double));
                }
            }

            int     dateInt;  //used to prevent casual snooping into the indDet page
            int     temp = 0; //store a temporary value to test if it's zero
            DataRow nr;

            DataRow[] fdr;
            foreach (DataRow dr in dtRaw.Rows)
            {
                fdr = dtUsage.Select(string.Format("ClientID = {0}", dr["ClientID"]));

                if (fdr.Length == 0) //add row to table
                {
                    nr                = dtUsage.NewRow();
                    nr["ClientID"]    = dr["ClientID"];
                    nr["DisplayName"] = dr["DisplayName"];
                    nr["Manager"]     = dr["Manager"];
                    dateInt           = 200 * (pp1.SelectedYear + Convert.ToInt32(dr["ClientID"])) + 3 * pp1.SelectedMonth + (Convert.ToInt32(dr["ClientID"]) % 10);
                    nr["URLdata"]     = string.Format("URLdata={0:0000}{1}", dr["ClientID"], dateInt);
                    dtUsage.Rows.Add(nr);
                }
                else
                {
                    nr = fdr[0];
                }

                bool      isPassbackRoom = false;
                DataRow[] rows           = dtRoom.Select(string.Format("RoomID = {0}", dr["RoomID"]));
                isPassbackRoom = Convert.ToBoolean(rows[0]["PassbackRoom"]);

                //2008-10-22 Sanrine wants to see non antipassback room, now we have DC lab and Organics Bay
                if (Convert.ToDouble(dr["Hours"]) > 0 && isPassbackRoom)
                {
                    nr[EntriesColumn(dr)] = dr["Entries"];
                    nr[HoursColumn(dr)]   = dr["Hours"];
                }
                else if (!isPassbackRoom)
                {
                    //for non Passbackroom, the Hours entry is null, Entries values are still valid
                    temp = Convert.ToInt32(dr["Entries"]);
                    if (temp != 0)
                    {
                        nr[EntriesColumn(dr)] = temp;
                    }
                }
            }

            //this is the footer row
            nr                = dtUsage.NewRow();
            nr["ClientID"]    = 0;
            nr["DisplayName"] = "zzzzzzzz";
            nr["Manager"]     = string.Empty;
            nr["URLdata"]     = string.Empty;
            foreach (DataRow dr in dtRoom.Rows)
            {
                var entriesCol = EntriesColumn(dr);
                var hoursCol   = HoursColumn(dr);

                var sumEntries = dtUsage.Compute($"SUM({entriesCol})", string.Empty);
                nr[entriesCol] = sumEntries;

                if (Convert.ToBoolean(dr["PassbackRoom"]))
                {
                    var sumHours = dtUsage.Compute($"SUM({hoursCol})", string.Empty);
                    nr[hoursCol] = sumHours;
                }
            }
            dtUsage.Rows.Add(nr);

            BoundField displayNameCol = new BoundField();

            displayNameCol.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
            displayNameCol.HeaderStyle.Font.Bold       = true;
            displayNameCol.HeaderText = "Lab User";
            displayNameCol.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
            dgAccess.Columns.Add(displayNameCol);

            BoundField managerCol = new BoundField();

            managerCol.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
            managerCol.HeaderStyle.Font.Bold       = true;
            managerCol.ItemStyle.HorizontalAlign   = HorizontalAlign.Center;
            managerCol.HtmlEncode = false;
            managerCol.HeaderText = "Manager";
            managerCol.DataField  = "Manager";
            dgAccess.Columns.Add(managerCol);

            foreach (DataRow dr in dtRoom.Rows)
            {
                BoundField entryCol = new BoundField();
                entryCol.HeaderStyle.Width           = Unit.Pixel(120);
                entryCol.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                entryCol.HeaderStyle.Font.Bold       = true;
                entryCol.ItemStyle.Width             = Unit.Pixel(120);
                entryCol.ItemStyle.HorizontalAlign   = HorizontalAlign.Center;
                entryCol.DataFormatString            = "{0:0.#}";
                entryCol.HeaderText = dr["Room"].ToString() + " Entries";
                entryCol.DataField  = EntriesColumn(dr);
                dgAccess.Columns.Add(entryCol);

                if (Convert.ToBoolean(dr["PassbackRoom"]))
                {
                    BoundField hoursCol = new BoundField();
                    hoursCol.HeaderStyle.Width           = Unit.Pixel(120);
                    hoursCol.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                    hoursCol.HeaderStyle.Font.Bold       = true;
                    hoursCol.ItemStyle.Width             = Unit.Pixel(120);
                    hoursCol.ItemStyle.HorizontalAlign   = HorizontalAlign.Center;
                    hoursCol.DataFormatString            = "{0:0.##}";
                    hoursCol.HeaderText = dr["Room"].ToString() + " Hours";
                    hoursCol.DataField  = HoursColumn(dr);
                    dgAccess.Columns.Add(hoursCol);
                }
            }

            dtUsage.DefaultView.Sort = "DisplayName";
            dgAccess.DataSource      = dtUsage;
            dgAccess.DataBind();
        }
Ejemplo n.º 18
0
 Result ITerminal.Result(ContextBase context, Category category, TerminalSyntax token)
     => Result(context, category);
Ejemplo n.º 19
0
 protected override Result Result(ContextBase context, Category category)
     => context
         .FindRecentFunctionContextObject
         .CreateValueReferenceResult(category);
Ejemplo n.º 20
0
 public UserController(ContextBase cb)
 {
     db = cb;
 }
Ejemplo n.º 21
0
        /// <summary>
        /// 公共登录验证
        /// </summary>
        /// <param name="vt">登录类型</param>
        /// <param name="mo">用户信息</param>
        /// <param name="isremember">记住账号</param>
        /// <returns></returns>
        private ActionResultVM ValidateLogin(ValidateloginType vt, Domain.UserInfo mo, bool isremember = true)
        {
            var vm = new ActionResultVM();

            string sql = string.Empty;

            using var db = new ContextBase();
            var uiR = db.UserInfo;

            Domain.UserInfo outMo = new Domain.UserInfo();

            switch (vt)
            {
            case ValidateloginType.local:
                if (string.IsNullOrWhiteSpace(mo.UserName) || string.IsNullOrWhiteSpace(mo.UserPwd))
                {
                    vm.msg = "用户名或密码不能为空";
                    return(vm);
                }
                else
                {
                    mo.UserPwd = Core.CalcTo.MD5(mo.UserPwd);

                    //邮箱登录
                    if (Fast.ParsingTo.IsMail(mo.UserName))
                    {
                        outMo = uiR.FirstOrDefault(x => x.UserMail == mo.UserName && x.UserPwd == mo.UserPwd);
                    }
                    else
                    {
                        outMo = uiR.FirstOrDefault(x => x.UserName == mo.UserName && x.UserPwd == mo.UserPwd);
                    }
                }
                break;

            case ValidateloginType.qq:
                outMo = uiR.FirstOrDefault(x => x.OpenId1.Equals(mo.OpenId1));
                break;

            case ValidateloginType.weibo:
                outMo = uiR.FirstOrDefault(x => x.OpenId2.Equals(mo.OpenId2));
                break;

            case ValidateloginType.github:
                outMo = uiR.FirstOrDefault(x => x.OpenId3.Equals(mo.OpenId3));
                break;

            case ValidateloginType.taobao:
                outMo = uiR.FirstOrDefault(x => x.OpenId4.Equals(mo.OpenId4));
                break;

            case ValidateloginType.microsoft:
                outMo = uiR.FirstOrDefault(x => x.OpenId5.Equals(mo.OpenId5));
                break;

            case ValidateloginType.dingtalk:
                outMo = uiR.FirstOrDefault(x => x.OpenId6.Equals(mo.OpenId6));
                break;
            }

            if (outMo == null || outMo.UserId == 0)
            {
                vm.msg = "用户名或密码错误";
                return(vm);
            }

            if (outMo.LoginLimit == 1)
            {
                vm.msg = "用户已被禁止登录";
                return(vm);
            }

            //刷新登录标记
            outMo.UserLoginTime = DateTime.Now;
            outMo.UserSign      = outMo.UserLoginTime.Value.ToTimestamp().ToString();
            uiR.Update(outMo);
            var num = db.SaveChanges();

            if (num < 1)
            {
                vm.msg = "请求登录被拒绝";
                return(vm);
            }

            try
            {
                //登录标记 缓存5分钟,绝对过期
                var usk = "UserSign_" + outMo.UserId;
                Core.CacheTo.Set(usk, outMo.UserSign, 5 * 60, false);

                //写入授权
                SetAuth(HttpContext, outMo, isremember);

                //生成Token
                vm.data = Func.UserAuthAid.TokenMake(outMo);

                vm.Set(ARTag.success);
            }
            catch (Exception ex)
            {
                vm.Set(ex);
            }

            return(vm);
        }
Ejemplo n.º 22
0
        public ActionResultVM WriteSave(UserWriting mo, string TagIds)
        {
            var vm = new ActionResultVM();

            try
            {
                var uinfo = new Application.UserAuthService(HttpContext).Get();

                using (var db = new ContextBase())
                {
                    //验证邮箱
                    if (GlobalTo.GetValue <bool>("Common:MailValid") && db.UserInfo.Find(uinfo.UserId).UserMailValid != 1)
                    {
                        vm.Set(ARTag.unauthorized);
                        vm.Msg = "请验证邮箱后再操作";

                        return(vm);
                    }

                    //有昵称
                    if (string.IsNullOrWhiteSpace(uinfo.Nickname))
                    {
                        vm.Set(ARTag.refuse);
                        vm.Msg = "请填写昵称后再操作";

                        return(vm);
                    }

                    var lisTagId = new List <int>();
                    TagIds.Split(',').ToList().ForEach(x => lisTagId.Add(Convert.ToInt32(x)));

                    var lisTagName = Application.CommonService.TagsQuery().Where(x => lisTagId.Contains(x.TagId)).ToList();

                    mo.Uid          = uinfo.UserId;
                    mo.UwCreateTime = DateTime.Now;
                    mo.UwUpdateTime = mo.UwCreateTime;
                    mo.UwLastUid    = mo.Uid;
                    mo.UwLastDate   = mo.UwCreateTime;
                    mo.UwReplyNum   = 0;
                    mo.UwReadNum    = 0;
                    mo.UwOpen       = 1;
                    mo.UwLaud       = 0;
                    mo.UwMark       = 0;
                    mo.UwStatus     = 1;

                    db.UserWriting.Add(mo);
                    db.SaveChanges();

                    var listwt = new List <UserWritingTags>();
                    foreach (var tag in lisTagId)
                    {
                        var wtmo = new UserWritingTags
                        {
                            UwId    = mo.UwId,
                            TagId   = tag,
                            TagName = lisTagName.FirstOrDefault(x => x.TagId == tag).TagName
                        };

                        listwt.Add(wtmo);
                    }
                    db.UserWritingTags.AddRange(listwt);

                    //标签热点+1
                    var listTagId = listwt.Select(x => x.TagId.Value);
                    var listTags  = db.Tags.Where(x => listTagId.Contains(x.TagId)).ToList();
                    listTags.ForEach(x => x.TagHot += 1);
                    db.Tags.UpdateRange(listTags);

                    int num = db.SaveChanges();

                    vm.Data = mo.UwId;
                    vm.Set(num > 0);
                }
            }
            catch (Exception ex)
            {
                Core.ConsoleTo.Log(ex);
                vm.Set(ex);
            }

            return(vm);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 回复
        /// </summary>
        /// <param name="mo">回复信息</param>
        /// <param name="um">消息通知</param>
        /// <returns></returns>
        public ActionResultVM LsitReplySave(UserReply mo, UserMessage um)
        {
            var vm = new ActionResultVM();

            var uinfo = new Application.UserAuthService(HttpContext).Get();

            if ((uinfo.UserId != 0 && string.IsNullOrWhiteSpace(uinfo.Nickname)) || (uinfo.UserId == 0 && string.IsNullOrWhiteSpace(mo.UrAnonymousName)))
            {
                vm.Set(ARTag.refuse);
                vm.Msg = "昵称不能为空";

                return(vm);
            }

            mo.Uid = uinfo.UserId;

            var now = DateTime.Now;

            //回复消息
            um.UmId         = Core.UniqueTo.LongId().ToString();
            um.UmTriggerUid = mo.Uid;
            um.UmType       = Application.EnumService.MessageType.UserWriting.ToString();
            um.UmTargetId   = mo.UrTargetId;
            um.UmAction     = 2;
            um.UmStatus     = 1;
            um.UmContent    = mo.UrContent;
            um.UmCreateTime = now;

            using (var db = new ContextBase())
            {
                //回复内容
                mo.UrCreateTime = now;
                mo.UrStatus     = 1;
                mo.UrTargetPid  = 0;
                mo.UrTargetType = Application.EnumService.ReplyType.UserWriting.ToString();

                mo.UrAnonymousLink = Fast.ParsingTo.JsSafeJoin(mo.UrAnonymousLink);

                db.UserReply.Add(mo);

                //回填文章最新回复记录
                var mow = db.UserWriting.FirstOrDefault(x => x.UwId.ToString() == mo.UrTargetId);
                if (mow != null)
                {
                    mow.UwReplyNum += 1;
                    mow.UwLastUid   = mo.Uid;
                    mow.UwLastDate  = now;

                    um.UmTargetIndex = mow.UwReplyNum;

                    db.UserWriting.Update(mow);
                }

                if (um.Uid != um.UmTriggerUid)
                {
                    db.UserMessage.Add(um);
                }

                int num = db.SaveChanges();

                vm.Set(num > 0);
            }

            return(vm);
        }
Ejemplo n.º 24
0
 public DKController(ContextBase cb)
 {
     db = cb;
 }
 public GenericRepository(ContextBase context)
 {
     _context = context;
 }
Ejemplo n.º 26
0
 public FormViewComponent(ContextBase cb)
 {
     db = cb;
 }
Ejemplo n.º 27
0
 Result ISuffix.Result(ContextBase context, Category category, Value left)
     => Result(context, category, left);
Ejemplo n.º 28
0
        /// <summary>
        /// 登录授权回调
        /// </summary>
        /// <param name="authorizeResult">获取授权码以及防伪标识</param>
        /// <returns></returns>
        public IActionResult AuthCallback(LoginBase.AuthorizeResult authorizeResult)
        {
            var vm = new ActionResultVM();

            try
            {
                if (string.IsNullOrWhiteSpace(authorizeResult.code))
                {
                    vm.Set(ARTag.unauthorized);
                }
                else
                {
                    //唯一标示
                    string openId = string.Empty;
                    //注册信息
                    var mo = new Domain.UserInfo()
                    {
                        LoginLimit     = 0,
                        UserSex        = 0,
                        UserCreateTime = DateTime.Now
                    };
                    //头像
                    string avatar = string.Empty;
                    //头像(高清)
                    string avatarhd = string.Empty;

                    Enum.TryParse(RouteData.Values["id"]?.ToString(), true, out ValidateloginType vtype);

                    switch (vtype)
                    {
                    case ValidateloginType.qq:
                    {
                        //获取 access_token
                        var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 OpendId
                        var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        //获取 UserInfo
                        var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                openid       = openidEntity.openid
                            });

                        //身份唯一标识
                        openId     = openidEntity.openid;
                        mo.OpenId1 = openId;

                        mo.Nickname = userEntity.nickname;
                        mo.UserSex  = userEntity.gender == "男" ? 1 : 2;
                        mo.UserSay  = "";
                        mo.UserUrl  = "";

                        avatar   = userEntity.figureurl_qq_1;
                        avatarhd = userEntity.figureurl_qq_2;
                    }
                    break;

                    case ValidateloginType.weibo:
                    {
                        //获取 access_token
                        var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 access_token 的授权信息
                        var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        //获取 users/show
                        var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                uid          = Convert.ToInt64(tokenInfoEntity.uid)
                            });

                        openId     = tokenEntity.access_token;
                        mo.OpenId2 = openId;

                        mo.Nickname = userEntity.screen_name;
                        mo.UserSex  = userEntity.gender == "m" ? 1 : userEntity.gender == "f" ? 2 : 0;
                        mo.UserSay  = userEntity.description;
                        mo.UserUrl  = userEntity.domain;

                        avatar   = userEntity.profile_image_url;
                        avatarhd = userEntity.avatar_large;
                    }
                    break;

                    case ValidateloginType.github:
                    {
                        //获取 access_token
                        var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = GitHub.User(new GitHub_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        openId     = userEntity.id.ToString();
                        mo.OpenId3 = openId;

                        mo.Nickname = userEntity.name;
                        mo.UserSay  = userEntity.bio;
                        mo.UserUrl  = userEntity.blog;
                        mo.UserMail = userEntity.email;

                        avatar   = userEntity.avatar_url;
                        avatarhd = userEntity.avatar_url;
                    }
                    break;

                    case ValidateloginType.taobao:
                    {
                        //获取 access_token
                        var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        openId     = tokenEntity.open_uid;
                        mo.OpenId4 = openId;

                        mo.Nickname = "淘宝用户";
                    }
                    break;

                    case ValidateloginType.microsoft:
                    {
                        //获取 access_token
                        var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        openId     = userEntity.id.ToString();
                        mo.OpenId5 = openId;

                        mo.Nickname = userEntity.last_name + userEntity.first_name;
                        mo.UserMail = userEntity.emails?["account"].ToStringOrEmpty();
                    }
                    break;

                    case ValidateloginType.dingtalk:
                    {
                        //获取 user
                        var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code);

                        openId     = userEntity.openid;
                        mo.OpenId6 = openId;

                        mo.Nickname = userEntity.nick;
                    }
                    break;
                    }

                    mo.UserCreateTime = DateTime.Now;
                    mo.UserName       = openId;
                    mo.UserPwd        = Core.CalcTo.MD5(openId);
                    if (!string.IsNullOrWhiteSpace(avatar))
                    {
                        mo.UserPhoto = Core.UniqueTo.LongId().ToString() + ".jpg";
                    }

                    if (string.IsNullOrWhiteSpace(openId))
                    {
                        vm.Set(ARTag.unauthorized);
                        vm.msg = "身份验证失败";
                    }
                    else
                    {
                        //判断是绑定操作
                        bool isbind = User.Identity.IsAuthenticated && authorizeResult.state.StartsWith("bind");
                        if (isbind)
                        {
                            int uid = new Func.UserAuthAid(HttpContext).Get().UserId;

                            using (var db = new ContextBase())
                            {
                                //检测是否绑定其它账号
                                var queryIsBind = db.UserInfo.Where(x => x.UserId != uid);
                                switch (vtype)
                                {
                                case ValidateloginType.qq:
                                    queryIsBind = queryIsBind.Where(x => x.OpenId1 == openId);
                                    break;

                                case ValidateloginType.weibo:
                                    queryIsBind = queryIsBind.Where(x => x.OpenId2 == openId);
                                    break;

                                case ValidateloginType.github:
                                    queryIsBind = queryIsBind.Where(x => x.OpenId3 == openId);
                                    break;

                                case ValidateloginType.taobao:
                                    queryIsBind = queryIsBind.Where(x => x.OpenId4 == openId);
                                    break;

                                case ValidateloginType.microsoft:
                                    queryIsBind = queryIsBind.Where(x => x.OpenId5 == openId);
                                    break;

                                case ValidateloginType.dingtalk:
                                    queryIsBind = queryIsBind.Where(x => x.OpenId6 == openId);
                                    break;
                                }
                                if (queryIsBind.Count() > 0)
                                {
                                    return(Content("已绑定其它账号,不能重复绑定"));
                                }

                                var userInfo = db.UserInfo.Find(uid);

                                switch (vtype)
                                {
                                case ValidateloginType.qq:
                                    userInfo.OpenId1 = openId;
                                    break;

                                case ValidateloginType.weibo:
                                    userInfo.OpenId2 = openId;
                                    break;

                                case ValidateloginType.github:
                                    userInfo.OpenId3 = openId;
                                    break;

                                case ValidateloginType.taobao:
                                    userInfo.OpenId4 = openId;
                                    break;

                                case ValidateloginType.microsoft:
                                    userInfo.OpenId5 = openId;
                                    break;

                                case ValidateloginType.dingtalk:
                                    userInfo.OpenId6 = openId;
                                    break;
                                }
                                db.UserInfo.Update(userInfo);
                                db.SaveChanges();
                            }

                            return(Redirect("/user/setting"));
                        }
                        else
                        {
                            using var db = new ContextBase();
                            Domain.UserInfo vmo = null;
                            switch (vtype)
                            {
                            case ValidateloginType.qq:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId1 == openId);
                                break;

                            case ValidateloginType.weibo:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId2 == openId);
                                break;

                            case ValidateloginType.github:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId3 == openId);
                                break;

                            case ValidateloginType.taobao:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId4 == openId);
                                break;

                            case ValidateloginType.microsoft:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId5 == openId);
                                break;

                            case ValidateloginType.dingtalk:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId6 == openId);
                                break;
                            }
                            //未注册
                            if (vmo == null)
                            {
                                var ruvm = RegisterUser(mo);
                                if (ruvm.code == 200)
                                {
                                    vm = ValidateLogin(vtype, mo);
                                    //拉取头像
                                    if (vm.code == 200 && (!string.IsNullOrWhiteSpace(avatar) || !string.IsNullOrWhiteSpace(avatarhd)))
                                    {
                                        try
                                        {
                                            using var wc = new System.Net.WebClient();
                                            var rootdir  = GlobalTo.WebRootPath + "/" + (GlobalTo.GetValue("StaticResource:RootDir").TrimStart('/').TrimEnd('/') + "/");
                                            var path     = GlobalTo.GetValue("StaticResource:AvatarPath").TrimEnd('/').TrimStart('/') + '/';
                                            var fullpath = rootdir + path;

                                            if (!System.IO.Directory.Exists(fullpath))
                                            {
                                                System.IO.Directory.CreateDirectory(fullpath);
                                            }
                                            if (!string.IsNullOrWhiteSpace(avatar))
                                            {
                                                wc.DownloadFile(avatar, fullpath + mo.UserPhoto);
                                            }
                                            if (!string.IsNullOrWhiteSpace(avatarhd))
                                            {
                                                wc.DownloadFile(avatarhd, fullpath + mo.UserPhoto.Replace(".jpg", "_lg.jpg"));
                                            }
                                        }
                                        catch (Exception)
                                        {
                                        }
                                    }
                                }
                                else
                                {
                                    vm.msg = ruvm.msg;
                                }
                            }
                            else
                            {
                                vm = ValidateLogin(vtype, vmo);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                vm.Set(ex);

                Core.ConsoleTo.Log(ex);
            }

            //成功
            if (vm.code == 200)
            {
                var rurl = Request.Cookies["ReturnUrl"];
                rurl = string.IsNullOrWhiteSpace(rurl) ? "/" : rurl;

                if (rurl.StartsWith("http"))
                {
                    rurl += "?cookie=ok";
                }

                return(Redirect(rurl));
            }
            else
            {
                string msg = "【登录失败】( " + vm.msg + " )".ToEncode();
                return(Redirect("/home/error?msg=" + msg));
            }
        }
Ejemplo n.º 29
0
 Result IInfix.Result
     (ContextBase context, Category category, Value left, Value right)
     => Result(context, category, left, right);
Ejemplo n.º 30
0
 public ItemController(ContextBase cb)
 {
     db = cb;
 }
Ejemplo n.º 31
0
 Result IPrefix.Result
     (ContextBase context, Category category, Value right, Syntax token)
     => Result(context, category, right, token);
Ejemplo n.º 32
0
 public CodeController(ContextBase cb)
 {
     db = cb;
 }
Ejemplo n.º 33
0
 protected override Result Result(ContextBase context, Category category)
     => context.ArgReferenceResult(category);
Ejemplo n.º 34
0
        /// <summary>
        /// Gist代码片段,同步到GitHub、Gitee
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        public static ActionResultVM GistSync(int UserId = 1)
        {
            var vm = new ActionResultVM();

            try
            {
                //日志
                var listLog = new List <object>();

                using var db = new ContextBase();
                var listGist = db.Gist.Where(x => x.Uid == UserId).OrderBy(x => x.GistCreateTime).ToList();

                var codes = listGist.Select(x => x.GistCode).ToList();

                var listGs = db.GistSync.Where(x => x.Uid == UserId).ToList();

                //执行命令记录
                var dicSync = new Dictionary <string, string>();

                foreach (var gist in listGist)
                {
                    var gs = listGs.FirstOrDefault(x => x.GistCode == gist.GistCode);
                    //新增
                    if (gs == null)
                    {
                        dicSync.Add(gist.GistCode, "add");
                    }
                    else if (gs?.GsGitHubTime != gist.GistUpdateTime || gs?.GsGiteeTime != gist.GistUpdateTime)
                    {
                        dicSync.Add(gist.GistCode, "update");
                    }
                }

                //删除
                var delCode = listGs.Select(x => x.GistCode).Except(listGist.Select(x => x.GistCode)).ToList();

                var token_gh = GlobalTo.GetValue("ApiKey:GitHub:GistToken");
                var token_ge = GlobalTo.GetValue("ApiKey:Gitee:GistToken");

                listLog.Add("同步新增、修改:" + dicSync.Count + " 条");
                listLog.Add(dicSync);

                //同步新增、修改
                if (dicSync.Count > 0)
                {
                    foreach (var key in dicSync.Keys)
                    {
                        var st   = dicSync[key];
                        var gist = listGist.FirstOrDefault(x => x.GistCode == key);
                        var gs   = listGs.FirstOrDefault(x => x.GistCode == key);

                        //发送主体
                        #region MyRegion
                        var jo = new JObject
                        {
                            ["access_token"] = token_ge,//only gitee

                            ["description"] = gist.GistRemark,
                            ["public"]      = gist.GistOpen == 1
                        };

                        var jc = new JObject
                        {
                            ["content"] = gist.GistContent
                        };

                        var jf = new JObject
                        {
                            [gist.GistFilename] = jc
                        };

                        jo["files"] = jf;
                        #endregion

                        switch (st)
                        {
                        case "add":
                        {
                            var gsmo = new GistSync()
                            {
                                GistCode     = key,
                                Uid          = UserId,
                                GistFilename = gist.GistFilename
                            };

                            //GitHub
                            {
                                var hwr = HttpTo.HWRequest("https://api.github.com/gists", "POST", jo.ToJson());
                                hwr.Headers.Add(HttpRequestHeader.Authorization, "token " + token_gh);
                                hwr.ContentType = "application/json";
                                hwr.UserAgent   = GlobalTo.GetValue("UserAgent");

                                var rt = HttpTo.Url(hwr);

                                gsmo.GsGitHubId   = rt.ToJObject()["id"].ToString();
                                gsmo.GsGitHubTime = gist.GistUpdateTime;
                            }

                            //Gitee
                            {
                                var hwr = HttpTo.HWRequest("https://gitee.com/api/v5/gists", "POST", jo.ToJson());
                                hwr.ContentType = "application/json";

                                var rt = HttpTo.Url(hwr);

                                gsmo.GsGiteeId   = rt.ToJObject()["id"].ToString();
                                gsmo.GsGiteeTime = gist.GistUpdateTime;
                            }

                            _ = db.GistSync.Add(gsmo);
                            _ = db.SaveChanges();

                            listLog.Add("新增一条成功");
                            listLog.Add(gsmo);
                        }
                        break;

                        case "update":
                        {
                            if (gs.GistFilename != gist.GistFilename)
                            {
                                jo["files"][gs.GistFilename] = null;
                                gs.GistFilename = gist.GistFilename;
                            }

                            //GitHub
                            {
                                var hwr = HttpTo.HWRequest("https://api.github.com/gists/" + gs.GsGitHubId, "PATCH", jo.ToJson());
                                hwr.Headers.Add(HttpRequestHeader.Authorization, "token " + token_gh);
                                hwr.ContentType = "application/json";
                                hwr.UserAgent   = GlobalTo.GetValue("UserAgent");

                                _ = HttpTo.Url(hwr);

                                gs.GsGitHubTime = gist.GistUpdateTime;
                            }

                            //Gitee
                            {
                                var hwr = HttpTo.HWRequest("https://gitee.com/api/v5/gists/" + gs.GsGiteeId, "PATCH", jo.ToJson());
                                hwr.ContentType = "application/json";

                                _ = HttpTo.Url(hwr);

                                gs.GsGiteeTime = gist.GistUpdateTime;
                            }

                            _ = db.GistSync.Update(gs);
                            _ = db.SaveChanges();

                            listLog.Add("更新一条成功");
                            listLog.Add(gs);
                        }
                        break;
                        }

                        Thread.Sleep(1000 * 2);
                    }
                }

                listLog.Add("同步删除:" + delCode.Count + " 条");
                listLog.Add(delCode);

                //同步删除
                if (delCode.Count > 0)
                {
                    foreach (var code in delCode)
                    {
                        var gs = listGs.FirstOrDefault(x => x.GistCode == code);

                        var dc = "00".ToCharArray();

                        #region GitHub
                        var hwr_gh = HttpTo.HWRequest("https://api.github.com/gists/" + gs.GsGitHubId, "DELETE");
                        hwr_gh.Headers.Add(HttpRequestHeader.Authorization, "token " + token_gh);
                        hwr_gh.UserAgent = GlobalTo.GetValue("UserAgent");
                        var resp_gh = (HttpWebResponse)hwr_gh.GetResponse();
                        if (resp_gh.StatusCode == HttpStatusCode.NoContent)
                        {
                            dc[0] = '1';
                        }
                        #endregion

                        #region Gitee
                        var hwr_ge  = HttpTo.HWRequest("https://gitee.com/api/v5/gists/" + gs.GsGiteeId + "?access_token=" + token_ge, "DELETE");
                        var resp_ge = (HttpWebResponse)hwr_ge.GetResponse();
                        if (resp_ge.StatusCode == HttpStatusCode.NoContent)
                        {
                            dc[1] = '1';
                        }
                        #endregion

                        if (string.Join("", dc) == "11")
                        {
                            _ = db.GistSync.Remove(gs);
                            _ = db.SaveChanges();

                            listLog.Add("删除一条成功");
                            listLog.Add(gs);
                        }
                        else
                        {
                            listLog.Add("删除一条异常");
                            listLog.Add(dc);
                        }

                        Thread.Sleep(1000 * 2);
                    }
                }

                listLog.Add("完成同步");

                vm.Set(ARTag.success);
                vm.data = listLog;
            }
            catch (Exception ex)
            {
                vm.Set(ex);
                Console.WriteLine(ex);
                if (ex.InnerException != null)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }
                ConsoleTo.Log(ex, true);
            }

            return(vm);
        }
Ejemplo n.º 35
0
        public ActionResultVM WriteSave(UserWriting mo, string TagIds)
        {
            var vm = new ActionResultVM();

            var uinfo = new Func.UserAuthAid(HttpContext).Get();

            using (var db = new ContextBase())
            {
                //已验证邮箱
                uinfo = db.UserInfo.Find(uinfo.UserId);
                if (uinfo.UserId != 1 && uinfo.UserMailValid != 1)
                {
                    vm.Set(ARTag.unauthorized);
                    vm.msg = "请验证邮箱后再操作";

                    return(vm);
                }


                var lisTagId = new List <int>();
                TagIds.Split(',').ToList().ForEach(x => lisTagId.Add(Convert.ToInt32(x)));

                var lisTagName = Func.Common.TagsQuery().Where(x => lisTagId.Contains(x.TagId)).ToList();

                mo.Uid          = uinfo.UserId;
                mo.UwCreateTime = DateTime.Now;
                mo.UwUpdateTime = mo.UwCreateTime;
                mo.UwLastUid    = mo.Uid;
                mo.UwLastDate   = mo.UwCreateTime;
                mo.UwReplyNum   = 0;
                mo.UwReadNum    = 0;
                mo.UwOpen       = 1;
                mo.UwLaud       = 0;
                mo.UwMark       = 0;
                mo.UwStatus     = 1;

                db.UserWriting.Add(mo);
                db.SaveChanges();

                var listwt = new List <UserWritingTags>();
                foreach (var tag in lisTagId)
                {
                    var wtmo = new UserWritingTags
                    {
                        UwId    = mo.UwId,
                        TagId   = tag,
                        TagName = lisTagName.Where(x => x.TagId == tag).FirstOrDefault().TagName
                    };

                    listwt.Add(wtmo);
                }
                db.UserWritingTags.AddRange(listwt);

                //标签热点+1
                var listTagId = listwt.Select(x => x.TagId.Value);
                var listTags  = db.Tags.Where(x => listTagId.Contains(x.TagId)).ToList();
                listTags.ForEach(x => x.TagHot += 1);
                db.Tags.UpdateRange(listTags);

                int num = db.SaveChanges();

                vm.Set(num > 0);
            }

            return(vm);
        }
Ejemplo n.º 36
0
 public ContatoRepository(ContextBase context) : base(context)
 {
 }
 private NPath ResolveBeeProjectRoot(ContextBase context) => Path.GetFullPath(Application.dataPath + $"/../Library/IncPipeline/{context.BuildConfigurationName}");
Ejemplo n.º 38
0
        public IActionResult Index()
        {
            string id = RouteData.Values["id"]?.ToString();

            if (string.IsNullOrWhiteSpace(id))
            {
                return(Redirect("/gist"));
            }

            //write js
            bool isjs = id.ToLower().Contains(".js");

            if (isjs)
            {
                id = id.Replace(".js", "");
            }

            //cmd && Auth
            string cmd = RouteData.Values["sid"]?.ToString().ToLower();

            if (User.Identity.IsAuthenticated)
            {
                var uinfo = new Func.UserAuthAid(HttpContext).Get();
                using (var db = new ContextBase())
                {
                    switch (cmd)
                    {
                    case "edit":
                    {
                        var mo = db.Gist.Where(x => x.GistCode == id).FirstOrDefault();
                        //有记录且为当前用户
                        if (mo != null && mo.Uid == uinfo.UserId)
                        {
                            return(View("_PartialMonacoEditor", mo));
                        }
                    }
                    break;

                    case "delete":
                    {
                        var mo = db.Gist.Where(x => x.GistCode == id && x.Uid == uinfo.UserId).FirstOrDefault();
                        db.Gist.Remove(mo);
                        int num = db.SaveChanges();
                        if (num > 0)
                        {
                            return(Redirect("/gist/user/" + uinfo.UserId));
                        }
                        else
                        {
                            return(Content("Deletion failed or could not be accessed"));
                        }
                    }
                    }
                }
            }

            using (var db = new ContextBase())
            {
                var query = from a in db.Gist
                            join b in db.GistSync on a.GistCode equals b.GistCode into bg
                            from b in bg.DefaultIfEmpty()
                            where a.GistCode == id && a.GistStatus == 1 && a.GistOpen == 1
                            select new Domain.Gist
                {
                    GistId         = a.GistId,
                    Uid            = a.Uid,
                    GistCode       = a.GistCode,
                    GistContent    = a.GistContent,
                    GistCreateTime = a.GistCreateTime,
                    GistUpdateTime = a.GistUpdateTime,
                    GistFilename   = a.GistFilename,
                    GistLanguage   = a.GistLanguage,
                    GistOpen       = a.GistOpen,
                    GistRemark     = a.GistRemark,
                    GistRow        = a.GistRow,
                    GistStatus     = a.GistStatus,
                    GistTags       = a.GistTags,
                    GistTheme      = a.GistTheme,

                    Spare1 = b.GsGitHubId,
                    Spare2 = b.GsGiteeId
                };
                var mo = query.FirstOrDefault();
                if (isjs)
                {
                    return(Content(mo.GistContent));
                }
                else
                {
                    return(View(mo));
                }
            }
        }
Ejemplo n.º 39
0
 public ToolController(ContextBase cb)
 {
     db = cb;
 }
Ejemplo n.º 40
0
        protected void BtnValidate_Click(object sender, EventArgs e)
        {
            tableNamePrefix = Convert.ToString(Session["Exp"]);

            // create instance of compile class
            Compile mCompile = new Compile();

            int    i;
            string strType = rblFormulaType.SelectedItem.Text;
            int    selType = Convert.ToInt32(rblFormulaType.SelectedValue);

            // now try formula
            try
            {
                DateTime  Period = new DateTime(DateTime.Now.Date.AddMonths(-1).Year, DateTime.Now.Date.AddMonths(-1).Month, 1);
                DataTable dtData = mCompile.CalcCost(strType, txtFormula.Text.Trim(), "", 0, Period, 0, 0, Compile.AggType.None, true, tableNamePrefix);

                if (dtData.Rows.Count > 0)
                {
                    // add calcCost as a array element to facilitate display
                    IList <string> temp;

                    temp = mCompile.aryVars[selType].ToList();
                    temp.Add("CalcCost");
                    mCompile.aryVars[selType] = temp.ToArray();

                    temp = mCompile.aryVarFormats[selType].ToList();
                    temp.Add("{0:$#,##0.00}");
                    mCompile.aryVarFormats[selType] = temp.ToArray();

                    BoundColumn bc;
                    for (i = 0; i < mCompile.aryVars[selType].Length; i++)
                    {
                        bc = new BoundColumn {
                            DataField = mCompile.aryVars[selType][i]
                        };
                        bc.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
                        bc.HeaderText                  = mCompile.aryVars[selType][i];
                        bc.HeaderStyle.Font.Bold       = true;
                        bc.HeaderStyle.HorizontalAlign = HorizontalAlign.Right;
                        if (mCompile.aryVarFormats[selType][i].Length > 0)
                        {
                            bc.DataFormatString = mCompile.aryVarFormats[selType][i];
                        }
                        dgSample.Columns.Add(bc);
                    }

                    dgSample.DataSource = dtData;
                    dgSample.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblError.Text    = ex.Message;
                lblError.Visible = true;
                return;
            }

            // if no errors, store new formula.
            // if a new formula has been stored, over-write it
            DataRow[] fdr = dsFormula.Tables["Formula"].Select(string.Format("FormulaType = '{0}'", rblFormulaType.SelectedItem.Text), "EffDate ASC");
            if (fdr.Length > 1)
            {
                dsFormula.Tables["Formula"].Rows.Remove(fdr[1]);
            }

            DataRow ndr = dsFormula.Tables["Formula"].NewRow();

            ndr["FormulaType"] = rblFormulaType.SelectedItem.Text;
            ndr["Formula"]     = txtFormula.Text;
            ndr["EffDate"]     = DateTime.Now;
            dsFormula.Tables["Formula"].Rows.Add(ndr);

            ContextBase.SetCacheData(dsFormula);

            btnRevert.Enabled = true;
        }
Ejemplo n.º 41
0
 public virtual void RefreshData(ContextBase context)
 {
 }
Ejemplo n.º 42
0
 public RepositoryBase(ContextBase contextBase)
 {
     _contextBase = contextBase;
     _entity      = contextBase.Set <TEntity>();
 }
Ejemplo n.º 43
0
 Result IMeta.Result
     (Category category, ResultCache left, ContextBase contextBase, Value right)
 {
     NotImplementedMethod(contextBase, left, category, right);
     return null;
 }
Ejemplo n.º 44
0
 public FutureRepository()
 {
     context = (ContextBase)ServicesProvider.ServiceProvider.GetService(typeof(ContextBase));
 }
Ejemplo n.º 45
0
 protected abstract Result Result
     (ContextBase context, Category category, TerminalSyntax token);
Ejemplo n.º 46
0
        public ActionResultVM LsitReplySave(UserReply mo, UserMessage um)
        {
            var vm = new ActionResultVM();

            var now = DateTime.Now;

            if (HttpContext.User.Identity.IsAuthenticated)
            {
                mo.Uid = new Func.UserAuthAid(HttpContext).Get().UserId;
            }
            else
            {
                mo.Uid = 0;
            }

            //回复消息
            um.UmId         = Core.UniqueTo.LongId().ToString();
            um.UmTriggerUid = mo.Uid;
            um.UmType       = Func.EnumAid.MessageType.UserWriting.ToString();
            um.UmTargetId   = mo.UrTargetId;
            um.UmAction     = 2;
            um.UmStatus     = 1;
            um.UmContent    = mo.UrContent;
            um.UmCreateTime = now;


            using (var db = new ContextBase())
            {
                //回复内容
                mo.UrCreateTime = now;
                mo.UrStatus     = 1;
                mo.UrTargetPid  = 0;
                mo.UrTargetType = Func.EnumAid.ReplyType.UserWriting.ToString();

                db.UserReply.Add(mo);

                //回填文章最新回复记录
                var mow = db.UserWriting.FirstOrDefault(x => x.UwId.ToString() == mo.UrTargetId);
                if (mow != null)
                {
                    mow.UwReplyNum += 1;
                    mow.UwLastUid   = mo.Uid;
                    mow.UwLastDate  = now;

                    um.UmTargetIndex = mow.UwReplyNum;

                    db.UserWriting.Update(mow);
                }

                if (um.Uid != um.UmTriggerUid)
                {
                    db.UserMessage.Add(um);
                }

                int num = db.SaveChanges();

                vm.Set(num > 0);
            }

            return(vm);
        }
Ejemplo n.º 47
0
 protected abstract Result Result
     (ContextBase context, Category category, Value right);
Ejemplo n.º 48
0
 public RepositoryGenerics(ContextBase context)
 {
     _contexto = context;
     DbSet     = _contexto.Set <T>();
 }
Ejemplo n.º 49
0
 protected abstract Result Result
     (ContextBase context, Category category);
Ejemplo n.º 50
0
 public AvaliacaoRepository(ContextBase contextBase) : base(contextBase)
 {
 }
Ejemplo n.º 51
0
 protected abstract Result Result
     (ContextBase callContext, Category category, Value right, Syntax token);
Ejemplo n.º 52
0
        public int Create(List <int> inseretedCompanyViewElement, List <int> deletedCompanyViewElement, int CompanyId, bool allowSaveChange = true)
        {
            var addedViewElemetId     = new List <int>();
            var allViewElements       = new List <ViewElement>();
            var allParentViewElements = new List <ViewElement>();

            var foundedCompany = ContextBase.Set <Company>().Find(CompanyId);

            var existedVElement = foundedCompany.CompanyViewElements.Select(a => a.ViewElement.Id).ToList();

            //در دیتابیس هستند  در لیست حذف شده هم هست
            var deleteElement = from x in existedVElement
                                where deletedCompanyViewElement.Contains(x)
                                select x;

            //لیست آیتم هایی که در دیتابیس هست و قرار نیست حذف شود
            var neverDeleteItem =
                foundedCompany.CompanyViewElements.Where(a => a.ViewElement.IsHidden != true)
                .Select(a => a.ViewElement.Id)
                .ToList();
            var existedItemForAdd = neverDeleteItem.Where(item => !deleteElement.Contains(item)).ToList();


            foreach (int item in existedItemForAdd)
            {
                if (!inseretedCompanyViewElement.Contains(item))
                {
                    inseretedCompanyViewElement.Add(item);
                }
            }



            foreach (var vId in existedVElement)
            {
                var foundedViewElement = ContextBase.Set <CompanyViewElement>().Find(vId, CompanyId);
                ContextBase.Set <CompanyViewElement>().Remove(foundedViewElement);
            }


            foreach (var velementId in inseretedCompanyViewElement)
            {
                var foundVelement = ContextBase.Set <ViewElement>().Find(velementId);


                foreach (var childElement in foundVelement.ChildrenViewElement)
                {
                    var parentElement = ContextBase.Set <ViewElement>().Find(childElement.ParentId);
                    List <ViewElement> resultElements;
                    resultElements = GetHiddenEelements(parentElement);
                    if (resultElements != null)
                    {
                        foreach (var resultElement in resultElements)
                        {
                            var hElement = ContextBase.Set <ViewElement>().Find(resultElement.Id);
                            if (!addedViewElemetId.Any(a => a.Equals(hElement.Id)))
                            {
                                Create(new CompanyViewElement()
                                {
                                    CompanyId     = CompanyId,
                                    ViewElementId = hElement.Id
                                }, false);
                            }



                            //...
                            addedViewElemetId.Add(hElement.Id);
                            allViewElements.Add(foundVelement);
                        }
                    }
                }


                if (!addedViewElemetId.Any(a => a.Equals(foundVelement.Id)))
                {
                    Create(new CompanyViewElement()
                    {
                        CompanyId     = CompanyId,
                        ViewElementId = foundVelement.Id
                    }, false);
                }
                //...
                addedViewElemetId.Add(foundVelement.Id);
                allViewElements.Add(foundVelement);
            }


            //...

            foreach (var item in allViewElements)
            {
                if (!allViewElements.Any(r => r.Id == item.ParentId))
                {
                    var foundParent = ContextBase.Set <ViewElement>().Find(item.ParentId); //Find(item.ParentId);

                    if (foundParent != null)
                    {
                        if (!allParentViewElements.Any(a => a.Id == foundParent.Id))
                        {
                            allParentViewElements.Add(foundParent);
                        }
                    }
                }
            }

            foreach (var parent in allParentViewElements)
            {
                if (parent.ChildrenViewElement != null)
                {
                    var hiddenElements = parent.ChildrenViewElement.Where(a => a.IsHidden).ToList();
                    foreach (var hItem in hiddenElements)
                    {
                        if (!addedViewElemetId.Any(a => a.Equals(hItem.Id)))
                        {
                            Create(new CompanyViewElement()
                            {
                                CompanyId     = CompanyId,
                                ViewElementId = hItem.Id
                            }, false);
                        }
                        addedViewElemetId.Add(hItem.Id);
                        allViewElements.Add(hItem);
                    }
                }
            }

            ContextBase.Set <Company>().Attach(foundedCompany);
            if (allowSaveChange)
            {
                return(SaveChanges());
            }
            return(0);
        }
Ejemplo n.º 53
0
 protected override Result Result
     (ContextBase context, Category category, Value right, Syntax token)
 {
     NotImplementedMethod(context, category, token, right);
     return null;
 }
Ejemplo n.º 54
0
 public NewsCollectionService(ILogger <NewsCollectionService> logger, ContextBase context)
 {
     _logger  = logger;
     _context = context;
 }
Ejemplo n.º 55
0
 protected override Result Result
     (ContextBase context, Category category, Value right, Syntax token)
     => context.FunctionalArgResult(category, right, token);
Ejemplo n.º 56
0
            public override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                var hc = filterContext.HttpContext;

                //是Ajax请求
                if (hc.Request.IsAjaxRequest())
                {
                    string controller = filterContext.RouteData.Values["controller"].ToString().ToLower();
                    string action     = filterContext.RouteData.Values["action"].ToString().ToLower();
                    string url        = hc.Request.Path.ToString() + hc.Request.QueryString.ToString();

                    try
                    {
                        //客户端信息
                        var ct = new Core.ClientTo();

                        //用户信息
                        var userinfo = Func.Common.GetLoginUserInfo();

                        //日志保存
                        var mo = new Domain.SysLog()
                        {
                            LogId          = Guid.NewGuid().ToString(),
                            SuName         = userinfo.UserName,
                            LogAction      = controller + "/" + action,
                            LogUrl         = url,
                            LogIp          = ct.IPv4,
                            LogCreateTime  = DateTime.Now,
                            LogBrowserName = ct.BrowserName,
                            LogSystemName  = ct.SystemName,
                            LogGroup       = 1
                        };
                        mo.LogContent = DicDescription[mo.LogAction.ToLower()];

                        #region 分批写入日志

                        //分批写入满足的条件:缓存的日志数量
                        int cacheLogCount = 2000;
                        //分批写入满足的条件:缓存的时长,单位秒
                        int cacheLogTime = 60;

                        //日志记录
                        var cacheLogsKey = "Global_Logs";
                        //上次写入的时间
                        var cacheLogWriteKey = "Global_Logs_Write";

                        if (!(Core.CacheTo.Get(cacheLogsKey) is List <Domain.SysLog> cacheLogs))
                        {
                            cacheLogs = new List <Domain.SysLog>();
                        }
                        cacheLogs.Add(mo);

                        var cacheLogWrite = Core.CacheTo.Get(cacheLogWriteKey) as DateTime?;
                        if (!cacheLogWrite.HasValue)
                        {
                            cacheLogWrite = DateTime.Now;
                        }

                        if (cacheLogs?.Count > cacheLogCount || DateTime.Now.ToTimestamp() - cacheLogWrite.Value.ToTimestamp() > cacheLogTime)
                        {
                            using (var db = new ContextBase())
                            {
                                db.SysLog.AddRange(cacheLogs);
                                db.SaveChanges();
                            }

                            cacheLogs     = null;
                            cacheLogWrite = DateTime.Now;
                        }

                        Core.CacheTo.Set(cacheLogsKey, cacheLogs, 3600 * 24 * 30);
                        Core.CacheTo.Set(cacheLogWriteKey, cacheLogWrite, 3600 * 24 * 30);

                        #endregion
                    }
                    catch (Exception)
                    {
                        //throw new System.Exception("写入操作日志失败");
                    }
                }

                base.OnActionExecuted(filterContext);
            }
Ejemplo n.º 57
0
 protected override Result Result
     (ContextBase context, Category category, TerminalSyntax token)
     => context
         .FindRecentCompoundView
         .ContextOperatorResult(category);
Ejemplo n.º 58
0
        /// <summary>
        /// 查询拼接
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="param"></param>
        /// <param name="ru"></param>
        /// <param name="or"></param>
        public static void QueryJoin <T>(IQueryable <T> query, QueryDataVM.GetParams param, ContextBase db, ref QueryDataVM.OutputResult or)
        {
            //条件
            query = QueryWhere(query, param);

            //总条数
            or.total = query.Count();

            //排序
            if (!string.IsNullOrWhiteSpace(param.sort))
            {
                query = Fast.QueryableTo.OrderBy(query, param.sort, param.order);
            }

            //分页
            if (param.pagination == 1)
            {
                query = query.Skip((param.page - 1) * param.rows).Take(param.rows);
            }

            //数据
            or.data = query.ToList();

            //列
            if (param.columnsExists != 1)
            {
                or.columns = db.SysTableConfig.Where(x => x.TableName == param.tableName).OrderBy(x => x.ColOrder).ToList();
            }
        }
Ejemplo n.º 59
0
 public Repository(ContextBase dbContext)
 {
     _dbContext = dbContext;
 }
Ejemplo n.º 60
0
        public void Export(QueryDataVM.GetParams param)
        {
            if (!string.IsNullOrWhiteSpace(param.tableName))
            {
                //导出文件名
                string filename = "导出表格";

                //生成excel的临时文件目录
                string path = GlobalVar.WebRootPath + "/temp/";

                //存放导出的数据
                var dt = new DataTable();

                //查询导出的数据
                string sql = ExportSql(param.tableName.ToLower());

                #region 表配置处理(列排序、列改名、剔除不要的列)
                using (var db = new ContextBase())
                {
                    using (var conn = db.Database.GetDbConnection())
                    {
                        conn.Open();
                        var cmd = conn.CreateCommand();
                        cmd.CommandText = sql;
                        dt.Load(cmd.ExecuteReader());
                    }

                    var configquery = from a in db.SysTableConfig
                                      where a.TableName == param.tableName && a.ColHide == 0 && a.ColExport == 1
                                      orderby(a.ColFrozen == null ? 0 : a.ColFrozen) descending, a.ColOrder ascending
                        select new
                    {
                        a.ColField,
                        a.ColTitle
                    };
                    //配置信息
                    var configlist = configquery.ToList();

                    var listcol = configlist.Select(x => x.ColField.ToLower()).ToList();
                    //需要删除的列
                    var listcolRemove = new List <string>();
                    foreach (DataColumn dc in dt.Columns)
                    {
                        if (!listcol.Contains(dc.ColumnName.ToLower()))
                        {
                            listcolRemove.Add(dc.ColumnName);
                        }
                    }
                    //删除列
                    foreach (var item in listcolRemove)
                    {
                        dt.Columns.Remove(item);
                    }

                    //列排序、重命名
                    for (int i = 0; i < configlist.Count; i++)
                    {
                        var item = configlist[i];
                        if (dt.Columns.Contains(item.ColField))
                        {
                            var dc = dt.Columns[item.ColField];
                            //列排序
                            dc.SetOrdinal(i);

                            //重命名列
                            int    index  = 1;
                            string newcol = item.ColTitle;
                            while (dt.Columns.Contains(newcol))
                            {
                                newcol = item.ColTitle + index.ToString();
                                index++;
                            }
                            dc.ColumnName = newcol;
                        }
                    }
                }
                #endregion

                #region 生成Excel并输出流
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                filename += DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
                if (Core.NPOITo.DataTableToExcel(dt, path + filename))
                {
                    new Core.DownTo(Response).Stream(path, filename);
                }
                #endregion
            }
        }