Exemplo n.º 1
0
        public ActionResult Edit(int id = 0)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var vm = new Models.Year.Edit();

                if (id != 0)
                {
                    var tb = (from p in db.Table <Basis.Entity.tbYear>()
                              where p.Id == id
                              select new Dto.Year.Edit
                    {
                        Id = p.Id,
                        No = p.No,
                        YearName = p.YearName,
                        IsDisable = p.IsDisable,
                        IsDefault = p.IsDefault,
                        FromDate = p.FromDate,
                        ToDate = p.ToDate,
                        YearTypeCode = p.YearType
                    }).FirstOrDefault();
                    if (tb != null)
                    {
                        vm.YearEdit = tb;
                    }
                }

                return(View(vm));
            }
        }
Exemplo n.º 2
0
        public ActionResult Edit(Models.Year.Edit vm)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var error = new List <string>();
                if (error.Count == decimal.Zero)
                {
                    if (vm.YearEdit.ToDate <= vm.YearEdit.FromDate)
                    {
                        error.AddError("结束时间必须晚于开始时间!");
                        return(Code.MvcHelper.Post(error));
                    }

                    if ((vm.YearEdit.ToDate.HasValue && !vm.YearEdit.FromDate.HasValue) || (!vm.YearEdit.ToDate.HasValue && vm.YearEdit.FromDate.HasValue))
                    {
                        error.AddError("开始时间和结束时间必须成对设置!");
                        return(Code.MvcHelper.Post(error));
                    }

                    if (db.Table <Basis.Entity.tbYear>().Where(d => d.YearName == vm.YearEdit.YearName && d.Id != vm.YearEdit.Id).Any())
                    {
                        error.AddError("该学年已存在!");
                        return(Code.MvcHelper.Post(error));
                    }

                    if (vm.YearEdit.IsDefault)
                    {
                        var tb = from p in db.Table <Basis.Entity.tbYear>()
                                 select p;

                        foreach (var section in tb)
                        {
                            section.IsDefault = false;
                        }

                        db.SaveChanges();
                    }

                    if (vm.YearEdit.Id == 0)
                    {
                        var listTbYear = new List <Entity.tbYear>();
                        var yearNum    = 0;
                        if (!int.TryParse(vm.YearEdit.YearName.Substring(0, 4), out yearNum))
                        {
                            return(Code.MvcHelper.Post(new List <string>()
                            {
                                "学年名称的前4位必须为年份数字!"
                            }));
                        }


                        var tbTenant = db.Set <Admin.Entity.tbTenant>().Find(Code.Common.TenantId);
                        var tb       = new Basis.Entity.tbYear();
                        //tb.No = vm.YearEdit.No == null ? db.Table<Basis.Entity.tbYear>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.YearEdit.No;
                        tb.No        = yearNum * 100;
                        tb.YearName  = vm.YearEdit.YearName;
                        tb.IsDisable = vm.YearEdit.IsDisable;
                        tb.IsDefault = vm.YearEdit.IsDefault;
                        tb.FromDate  = vm.YearEdit.FromDate;
                        tb.ToDate    = vm.YearEdit.ToDate;
                        tb.tbTenant  = tbTenant;

                        listTbYear.Add(tb);

                        #region 添加子级学期、学段

                        var term1 = new Areas.Basis.Entity.tbYear()
                        {
                            No           = yearNum * 100 + 10,
                            YearName     = yearNum + "-" + (yearNum + 1) + "学年上学期",
                            tbYearParent = tb,
                            tbTenant     = tbTenant,
                            YearType     = Code.EnumHelper.YearType.Term,
                            IsDisable    = tb.IsDisable
                        };

                        listTbYear.Add(term1);

                        var term2 = new Areas.Basis.Entity.tbYear()
                        {
                            No           = yearNum * 100 + 20,
                            YearName     = yearNum + "-" + (yearNum + 1) + "学年下学期",
                            tbYearParent = tb,
                            tbTenant     = tbTenant,
                            YearType     = Code.EnumHelper.YearType.Term,
                            IsDisable    = tb.IsDisable
                        };
                        listTbYear.Add(term2);

                        var section1 = new Areas.Basis.Entity.tbYear()
                        {
                            No           = yearNum * 100 + 11,
                            YearName     = yearNum + "-" + (yearNum + 1) + "学年上学期期中",
                            tbYearParent = term1,
                            tbTenant     = tbTenant,
                            YearType     = Code.EnumHelper.YearType.Section,
                            IsDisable    = tb.IsDisable
                        };
                        listTbYear.Add(section1);

                        var section2 = new Areas.Basis.Entity.tbYear()
                        {
                            No           = yearNum * 100 + 12,
                            YearName     = yearNum + "-" + (yearNum + 1) + "学年上学期期末",
                            tbYearParent = term1,
                            tbTenant     = tbTenant,
                            YearType     = Code.EnumHelper.YearType.Section,
                            IsDisable    = tb.IsDisable
                        };
                        listTbYear.Add(section2);

                        var section3 = new Areas.Basis.Entity.tbYear()
                        {
                            No           = yearNum * 100 + 23,
                            YearName     = yearNum + "-" + (yearNum + 1) + "学年下学期期中",
                            tbYearParent = term2,
                            tbTenant     = tbTenant,
                            YearType     = Code.EnumHelper.YearType.Section,
                            IsDisable    = tb.IsDisable
                        };
                        listTbYear.Add(section3);
                        var section4 = new Areas.Basis.Entity.tbYear()
                        {
                            No           = yearNum * 100 + 24,
                            YearName     = yearNum + "-" + (yearNum + 1) + "学年下学期期末",
                            tbYearParent = term2,
                            tbTenant     = tbTenant,
                            YearType     = Code.EnumHelper.YearType.Section,
                            IsDisable    = tb.IsDisable
                        };
                        listTbYear.Add(section4);

                        #endregion


                        db.Set <Entity.tbYear>().AddRange(listTbYear);

                        if (db.SaveChanges() > 0)
                        {
                            XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加了学年学段");
                        }
                    }
                    else
                    {
                        var tb = (from p in db.Table <Basis.Entity.tbYear>().Include(p => p.tbYearParent)
                                  where p.Id == vm.YearEdit.Id
                                  select p).FirstOrDefault();
                        if (tb != null)
                        {
                            if (vm.YearEdit.YearName.Length < 9)
                            {
                                error.AddError("学年名称格式不正确,格式为:yyyy-yyyy学年,如:2015-2016学年!");
                                return(Code.MvcHelper.Post(error));
                            }
                            tb.No = vm.YearEdit.No == null?db.Table <Basis.Entity.tbYear>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.YearEdit.No;

                            tb.YearName  = vm.YearEdit.YearName;
                            tb.IsDisable = vm.YearEdit.IsDisable;
                            tb.IsDefault = vm.YearEdit.IsDefault;
                            tb.FromDate  = vm.YearEdit.FromDate;
                            tb.ToDate    = vm.YearEdit.ToDate;


                            //同步设置所有子级
                            if (tb.YearType != Code.EnumHelper.YearType.Section)
                            {
                                var childs = GetSon(db, tb.Id);
                                if (childs != null)
                                {
                                    foreach (var item in childs)
                                    {
                                        item.IsDisable = tb.IsDisable;
                                        item.YearName  = tb.YearName.Substring(0, 9) + item.YearName.Remove(0, 9);
                                    }
                                }
                            }

                            //设置为启用时,同步设置所有上级
                            if (tb.YearType != Code.EnumHelper.YearType.Year && !tb.IsDisable)
                            {
                                var parents = GetParent(db, tb.tbYearParent.Id);
                                foreach (var item in parents)
                                {
                                    item.IsDisable = tb.IsDisable;
                                }
                            }


                            if (db.SaveChanges() > 0)
                            {
                                XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("修改了学年学段");
                            }
                        }
                        else
                        {
                            error.AddError(Resources.LocalizedText.MsgNotFound);
                        }
                    }
                }
                return(Code.MvcHelper.Post(error));
            }
        }