protected void Page_Load(object sender, EventArgs e)
        {
            _trainDetaiRepo = RepositoryFactory.CreateTrainDetailRepo();
            _rootRepo       = RepositoryFactory.CreateRootRepo();
            if (!Authentication.HasResource(User.Identity.Name, "TrainDetail01"))
            {
                Response.Redirect(@"/account/logon.aspx?ReturnUrl=%2f");
            }
            if (!IsPostBack)
            {
                PageTitle.Value = "學員意見調查維護 > 編輯";

                string CLID            = String.IsNullOrEmpty(Request["CLID"]) ? String.Empty : Request["CLID"].ToString();
                string SID             = String.IsNullOrEmpty(Request["SID"]) ? String.Empty : Request["SID"].ToString();
                var    employeeData    = _rootRepo.QueryForEmployeeByEmpID(SID);
                string DepartmentID_FK = employeeData != null ? employeeData["DepartmentID_FK"].ToString() : String.Empty;
                model = _trainDetaiRepo.GetDetail(CLID, SID, DepartmentID_FK);
                // 取得 QueryString
                //var paggerParms = WebUtils.ParseQueryString<PaggerParms>(Page.Request);
                //var signListParms = WebUtils.ParseQueryString<SignListParms>(Page.Request);
                //signListParms.Member = Authentication.GetMemberViewModel(User.Identity.Name);
                //signListParms.GridView = TrainDetailGridView;
                //signListParms.PaginationBar = paginationBar;
                //paggerParms.OrderField = "qno";


                ////建構頁面
                //ConstructPage(signListParms, paggerParms, RepositoryFactory.CreateTrainDetailRepo());
                WebUtils.PageDataBind(model, this.Page);
                SaveBtn.Attributes.Add("onclick ", "return confirm( '提醒:送出後就不可更改,確定要送出嗎?');");
            }
            PageInit();
        }
コード例 #2
0
ファイル: AdminController.cs プロジェクト: zlobste/CloudTrain
        public ActionResult EditTrain(TrainViewModel trainView)
        {
            var mapper   = new MapperConfiguration(cfg => cfg.CreateMap <TrainViewModel, TrainDTO>()).CreateMapper();
            var trainDto = mapper.Map <TrainViewModel, TrainDTO>(trainView);

            _trainService.EditTrain(trainDto);
            return(RedirectToAction("ShowTrains"));
        }
コード例 #3
0
        private void ComboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            TrainViewModel o = this.DataContext as TrainViewModel;

            o.Station.SelectedTrain = o.TrainList.Find((item) => item.Name == o.SelectedTrainName);
            this.DataContext        = o;
            Deb.Print(o.Station.SelectedTrain, "<======>");
        }
コード例 #4
0
        //簽核作業頁面 > 取得學員課程明細資料
        public TrainViewModel GetData(string SignDocID)
        {
            TrainViewModel model      = null;
            string         strCatelog = RepositoryFactory.PotalConn["Catelog"];
            string         strSQL     = String.Format(@"select
	                            a.CLID CLID,
	                            class.CLNAME CLNAME,
	                            class.HOURS,
	                            class.START_DATE STARTDATE,
	                            a.SID SID,
	                            emp.EmployeeName SNAME,
	                            a.SignDocID SignDocID,
	                            dep.DepartmentID DepartmentID_FK,
	                            dep.DepartmentName DepartmentName,
	                            a.TABLE_ID TABLE_ID,
	                            Sig_M.FormID_FK FormID_FK,
	                            Sig_M.EmployeeID_FK ApplyID_FK,
	                            apply.EmployeeName ApplayName,
	                            Sig_M.SendDate ApplyDateTime
                            from FORM_SIGN a
                            left join {0}..SignForm_Main Sig_M on Sig_M.SignDocID=a.SignDocID
                            left join {0}..Employee apply on apply.EmployeeID=Sig_M.EmployeeID_FK
                            left join {0}..Employee emp on emp.EmployeeID=a.SID
                            left join {0}..Department dep on dep.DepartmentID=emp.DepartmentID_FK
                            left join RTCLASS class on class.CLID=a.CLID
                            where a.SignDocID=@SignDocID", strCatelog);

            var strCondition = new Conditions()
            {
                { "@SignDocID", SignDocID }
            };

            var result = _dc.QueryForDataRow(strSQL, strCondition);

            if (result == null)
            {
                return(null);
            }

            model = new TrainViewModel()
            {
                FormID_FK       = Int32.Parse(result["FormID_FK"].ToString()),
                SignDocID_FK    = result["SignDocID"].ToString(),
                ApplyID_FK      = result["ApplyID_FK"].ToString(),
                ApplyName       = result["ApplayName"].ToString(),
                ApplyDateTime   = DateTime.Parse(result["ApplyDateTime"].ToString()),
                CLID            = result["CLID"].ToString(),
                SID             = result["SID"].ToString(),
                CLNAME          = result["CLNAME"].ToString(),
                Start_Date      = !result["STARTDATE"].IsDBNullOrWhiteSpace() ? DateTime.Parse(result["STARTDATE"].ToString()) : (DateTime?)null,
                HOURS           = result["HOURS"].ToString(),
                SNAME           = result["SNAME"].ToString(),
                DepartmentID_FK = result["DepartmentID_FK"].ToString()
            };

            return(model);
        }
コード例 #5
0
        /// <summary>
        /// [NOT CONNECTED TO RECOGNIZE MODULE] Save pictures (or archive of pictures) on server, send pictures to train of recognize module
        /// </summary>
        /// <param name="model">Model to train</param>
        /// <returns>F1 Score of recognize valid data</returns>
        public async Task <double?> TrainModel(TrainViewModel model)
        {
            var modelNN = await _applicationDbContext.ModelsNN.SingleOrDefaultAsync(m => m.URL == model.ModelURL);

            if (modelNN != null)
            {
                List <string> pathes = new List <string>(model.Files.Count);
                byte[]        buffer = new byte[4096];
                //Save files
                foreach (var file in model.Files)
                {
                    if (file.ContentType.IndexOf("zip") > -1)
                    {
                        using (ZipInputStream s = new ZipInputStream(file.OpenReadStream()))
                        {
                            ZipEntry theEntry;
                            while ((theEntry = s.GetNextEntry()) != null)
                            {
                                var fpath = Path.GetFileName(theEntry.Name).ToLower();
                                if (fpath.IndexOf(".img") > -1 ||
                                    fpath.IndexOf(".png") > -1 ||
                                    fpath.IndexOf(".gif") > -1)
                                {
                                    var filepath = _fileService.GetNextFilesPath(1, DirectoryType.Upload)[0];
                                    using (FileStream streamWriter = File.Create(filepath))
                                    {
                                        StreamUtils.Copy(s, streamWriter, buffer);
                                        pathes.Add(filepath);
                                    }
                                }
                            }
                            s.Close();
                        }
                    }
                    if (file.ContentType.IndexOf("image") > -1)
                    {
                        pathes.Add(await SaveUploadFile(file));
                    }
                }
                //Create file map: path_to_file \t number_class
                if (pathes.Count != 0)
                {
                    var mapFilePath = _fileService.GetNextFilesPath(1, DirectoryType.Model)[0] + ".map";
                    using (var mapStream = new StreamWriter(mapFilePath))
                    {
                        foreach (var img in pathes)
                        {
                            await mapStream.WriteLineAsync($"{img}\t{model.Class}");
                        }
                        mapStream.Close();
                    }
                }
            }
            //TODO: Send .map file path to Recognize module
            return(0);
        }
コード例 #6
0
        public ActionResult Insert()
        {
            if (IsAdmin)
            {
                var Train = new TrainViewModel();

                return(View(Train));
            }
            return(RedirectToAction("Login", "Account"));
        }
コード例 #7
0
 public TrainView()
 {
     InitializeComponent();
     viewModel = new TrainViewModel(this);
     if (CheckForAdminRole())
     {
         buttonSave.Enabled       = true;
         buttonTrain.Enabled      = true;
         buttonEncryptCSV.Enabled = true;
     }
 }
コード例 #8
0
ファイル: Trains.cs プロジェクト: BelovEvgeny/nsudotnet
        public ActionResult Trains()
        {
            var trainViewModel = new TrainViewModel()
            {
                Configurator = new Configurator <Train, Train>()
                               .Configure()
                               .Url(Url.Action(nameof(HandleTrains)))
            };

            return(View(trainViewModel));
        }
 public void SubmitData(TrainViewModel model)
 {
     //Create
     if (String.IsNullOrWhiteSpace(model.SignDocID_FK))
     {
         createData(model);
     }
     else//Edit
     {
     }
 }
コード例 #10
0
        public async Task UpdateSkillPointsAsync(TrainViewModel trainViewModel, int skillId)
        {
            var skill = this.GetById(skillId);

            skill.Grappling = trainViewModel.Grappling;
            skill.Striking  = trainViewModel.Striking;
            skill.Wrestling = trainViewModel.Wrestling;
            skill.Stamina   = trainViewModel.Stamina;
            skill.Health    = trainViewModel.Health;
            skill.Strenght  = trainViewModel.Strenght;

            await this.skillsRepository.SaveChangesAsync();
        }
コード例 #11
0
        public virtual ActionResult NetSettings(string id = null)
        {
            Logger.LogInfo <TrainController>("Net settings opened (id=[{0}])", id ?? "null");

            TrainViewModel model = null;

            if (id != null)
            {
                var settings = trainStorageManager.LoadTrainSettings(id);
                if (settings != null)
                {
                    model = settings.ShallowCloneAs <TrainViewModel>();
                    model.HiddenLayersSizesStr = string.Join("; ", settings.HiddenLayersSizes);
                }
            }

            if (model == null)
            {
                model = new TrainViewModel()
                {
                    InputImgSizePx   = 20,
                    PenThicknessPerc = 12,
                    GenerateExtraInputsByRotation = 10,
                    NormalizeInput        = true,
                    LearnRounds           = 1,
                    BatchSize             = 0,
                    MaxIteratinosPerBatch = 100,
                    RegularizationLambda  = 0.5,
                    MinDerivCompMaxMagn   = 1e-3,
                    OptimizationAlgorithm = OptimizationAlgorithm.ImprovedRpropMinus,
                    InitSeed = new Random().Next(),

                    LearningRate      = 0.1,
                    MomentumStartPerc = 60,
                    MomentumEndPerc   = 90,

                    RpropInitStep     = 0.01,
                    RpropMaxStep      = 10,
                    RpropStepUpMult   = 1.2,
                    RpropStepDownMult = 0.5,

                    TestDataSetSizePerc  = 10,
                    TrainEvaluationIters = 3,
                    SkipFrstIters        = 6,
                };
            }

            initModel(model);

            return(View(model));
        }
コード例 #12
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         _trainDetaiRepo = RepositoryFactory.CreateTrainDetailRepo();
         //從QueryString取得 簽核代碼
         string docID = String.IsNullOrEmpty(Request["SignDocID"]) ? String.Empty : Request["SignDocID"].ToString();
         //根據查詢的 簽核代碼 搜尋忘刷單
         model = _trainDetaiRepo.GetData(docID);
         WebUtils.PageDataBind(model, this.Page);
         Signed.NavigateUrl = "~/Area/Sign/WorkflowDetail.aspx?signDocID=" + docID;
     }
     PageInit();
 }
コード例 #13
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            TrainViewModel o = this.DataContext as TrainViewModel;

            if (o.SelectedPlaceArrival == "" && o.SelectedPlaceDeparture == "")
            {
                o.getTrainList();
            }
            else
            {
                o.getAccessedTrainList(o.SelectedPlaceArrival, o.SelectedPlaceDeparture);
            }
            this.ComboTrains.ItemsSource = o.TrainList;
        }
コード例 #14
0
ファイル: AdminController.cs プロジェクト: zlobste/CloudTrain
 public ActionResult CreateTrain(TrainViewModel train)
 {
     try
     {
         var trainDto = new TrainDTO {
             Name = train.Name, Description = train.Description
         };
         _trainService.MakeTrain(trainDto);
         return(Content("Вы успешно создали поезд"));
     }
     catch (ValidationException ex)
     {
         ModelState.AddModelError(ex.Property, ex.Message);
     }
     return(View(train));
 }
コード例 #15
0
        public async Task <IActionResult> Train(TrainViewModel newSkills)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var skillId = int.Parse(this.RouteData.Values["id"].ToString());
            var skill   = this.skillsService.GetById(skillId);

            var hasEnoughCoinsToMakeTheTraining = this.skillsService.ChechForEnoughCoinsToTrain(user, skill, newSkills);

            if (hasEnoughCoinsToMakeTheTraining == false)
            {
                return(this.RedirectToAction("NotEnoughCoins", "Home"));
            }

            await this.skillsService.UpdateSkillPointsAsync(newSkills, skillId);

            return(this.RedirectToAction("AllFighters"));
        }
コード例 #16
0
        public IActionResult Index(SortState sortState, int page = 1)
        {
            IEnumerable <Train> trains = railroadContext.Trains.Include(t => t.Type);

            trains = SortSearch(trains, sortState);
            int pageSize = 20;
            int count    = trains.Count();

            trains = trains.Skip((page - 1) * pageSize).Take(pageSize).ToList();
            PageViewModel  pageViewModel = new PageViewModel(count, page, pageSize);
            TrainViewModel viewModel     = new TrainViewModel
            {
                PageViewModel = pageViewModel,
                Trains        = trains,
                SortViewModel = new SortViewModel(sortState)
            };

            return(View(viewModel));
        }
コード例 #17
0
        public void ChechForEnoughCoinsToTrain_ShouldReturnFalse_WhenCoinsAreNotEnough()
        {
            var trainViewModel = new TrainViewModel()
            {
                Striking  = 76,
                Grappling = 76,
                Wrestling = 76,
                Stamina   = 76,
                Health    = 76,
                Strenght  = 76,
            };

            var user  = this.usersRepository.All().Where(x => x.Id == "51926c23-8a91-4e7e-94be-a97dd84bad1d").FirstOrDefault();
            var skill = this.skillsRepository.All().Where(x => x.Id == 1).FirstOrDefault();

            var result = this.skillsService.ChechForEnoughCoinsToTrain(user, skill, trainViewModel);

            Assert.False(result);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            _trainDetaiRepo = RepositoryFactory.CreateTrainDetailRepo();
            _rootRepo       = RepositoryFactory.CreateRootRepo();
            if (!Authentication.HasResource(User.Identity.Name, "TrainDetail02"))
            {
                Response.Redirect(@"/account/logon.aspx?ReturnUrl=%2f");
            }
            if (!IsPostBack)
            {
                string signDocID = String.IsNullOrEmpty(Request["SignDocID_FK"]) ? String.Empty : Request["SignDocID_FK"].ToString();
                PageTitle.Value  = "受訓心得報告維護 > 編輯";
                FormSeries.Value = "Train";

                string CLID            = String.IsNullOrEmpty(Request["CLID"]) ? String.Empty : Request["CLID"].ToString();
                string SID             = String.IsNullOrEmpty(Request["SID"]) ? String.Empty : Request["SID"].ToString();
                var    employeeData    = _rootRepo.QueryForEmployeeByEmpID(SID);
                string DepartmentID_FK = employeeData != null ? employeeData["DepartmentID_FK"].ToString() : String.Empty;
                model = _trainDetaiRepo.GetDetail(CLID, SID, DepartmentID_FK);

                // 取得 QueryString
                //var paggerParms = WebUtils.ParseQueryString<PaggerParms>(Page.Request);
                //var signListParms = WebUtils.ParseQueryString<SignListParms>(Page.Request);
                //signListParms.Member = Authentication.GetMemberViewModel(User.Identity.Name);
                //signListParms.GridView = TrainDetailGridView;
                //signListParms.PaginationBar = paginationBar;
                //paggerParms.OrderField = "qno";

                ////建構頁面
                //ConstructPage(signListParms, paggerParms, RepositoryFactory.CreateTrainDetailRepo());
                WebUtils.PageDataBind(model, this.Page);
                if (!String.IsNullOrWhiteSpace(signDocID))
                {
                    //將 viewModel 的值綁定到 頁面上
                    WebUtils.PageDataBind(_trainDetaiRepo.GetData(signDocID), this.Page);

                    SignDocID_FK.Text = signDocID;
                    PageTitle.Value   = "表單編輯作業 > 忘刷單";
                }
            }
            PageInit();
        }
コード例 #19
0
        public ActionResult Edit(int?id)
        {
            if (IsAdmin)
            {
                try
                {
                    TrainDetailDTO train = trainService.GetTrain(id);
                    var            Train = new TrainViewModel {
                        Train_Name = train.Train_Name, Id = train.Id, Train_Desc = train.Train_Desc, From_City = train.From_City, To_City = train.To_City, ArrivalDate = train.ArrivalDate, DepartureDate = train.DepartureDate
                    };

                    return(View(Train));
                }
                catch (ValidationException ex)
                {
                    return(Content(ex.Message));
                }
            }
            return(RedirectToAction("Index"));
        }
コード例 #20
0
 public ActionResult Insert(TrainViewModel train)
 {
     if (IsAdmin)
     {
         try
         {
             var trainDto = new TrainDetailDTO {
                 Train_Name = train.Train_Name, Train_Desc = train.Train_Desc, From_City = train.From_City, To_City = train.To_City, ArrivalDate = train.ArrivalDate, DepartureDate = train.DepartureDate
             };
             trainService.Create(trainDto);
             return(Content("<h2>Поезд успешно добавлен</h2> <a href='/'> На главную </a>"));
         }
         catch (ValidationException ex)
         {
             ModelState.AddModelError(ex.Property, ex.Message);
         }
         return(View(train));
     }
     return(RedirectToAction("Login", "Account"));
 }
コード例 #21
0
        public TrainViewModel GetDetail(string CLID, string SID, string Dept)
        {
            TrainViewModel model  = null;
            string         strSQL = @"SELECT
	                                   class.clid       CLID,
                                       class.clname     CLNAME,
                                       class.start_date STARTDATE,
                                       class.hours      HOURS,
                                       stu.sid          SID,
                                       stu.sname        SNAME,
                                       class.unitid     UNITID,
                                       class.unitname   UNITNAME
                                FROM   rtclass class
                                       RIGHT JOIN students stu  ON class.clid = stu.clid
                                WHERE  stu.SID = @SID and class.clid=@CLID ";

            var strCondition = new Conditions()
            {
                { "@CLID", CLID }, { "@SID", SID }
            };

            var result = _dc.QueryForDataRow(strSQL, strCondition);

            if (result == null)
            {
                return(null);
            }

            model = new TrainViewModel()
            {
                CLID            = result["CLID"].ToString(),
                SID             = result["SID"].ToString(),
                CLNAME          = result["CLNAME"].ToString(),
                Start_Date      = !result["STARTDATE"].IsDBNullOrWhiteSpace() ? DateTime.Parse(result["STARTDATE"].ToString()) : (DateTime?)null,
                HOURS           = result["HOURS"].ToString(),
                SNAME           = result["SNAME"].ToString(),
                DepartmentID_FK = Dept
            };

            return(model);
        }
コード例 #22
0
        public bool ChechForEnoughCoinsToTrain(ApplicationUser user, Skill skill, TrainViewModel trainViewModel)
        {
            var overallSkillPointsAfterTraining = trainViewModel.Striking +
                                                  trainViewModel.Grappling +
                                                  trainViewModel.Wrestling +
                                                  trainViewModel.Stamina +
                                                  trainViewModel.Strenght +
                                                  trainViewModel.Health;

            var curentSkillPointsOverall = this.GetSkillPointsOverall(skill);
            var newSkillPoints           = overallSkillPointsAfterTraining - curentSkillPointsOverall;

            if (newSkillPoints * 1000 > user.Coins)
            {
                return(false);
            }

            user.Coins -= newSkillPoints * 1000;

            return(true);
        }
コード例 #23
0
        public IActionResult FirstClass()
        {
            if (HttpContext.Session.GetString("Emailadres") == null)
            {
                return(RedirectToAction("Login", "Account"));
            }
            else
            {
                Travelplan  travel       = new Travelplan(HttpContext.Session.GetString("Beginstation"), HttpContext.Session.GetString("Eindstation"), (int)HttpContext.Session.GetInt32("Spoor"));
                List <int>  wagonnummers = wagonRepo.GetWagonNumber1steKlasse(travel);
                List <Seat> seats        = seatRepo.GetAllSeat1steKlasse(travel);

                TrainViewModel wagonView = new TrainViewModel()
                {
                    Wagonnumber = wagonnummers,
                    Seats       = seats
                };

                return(View(wagonView));
            }
        }
コード例 #24
0
        public IActionResult SecondClass()
        {
            if (HttpContext.Session.GetString("Emailadres") == null)
            {
                return(RedirectToAction("Login", "Account"));
            }
            else
            {
                Travelplan travelplan = new Travelplan(HttpContext.Session.GetString("Beginstation"), HttpContext.Session.GetString("Eindstation"), (int)HttpContext.Session.GetInt32("Spoor"));

                //int wagonnumber = (int)HttpContext.Session.GetInt32("Wagonnummer");
                List <Seat> seats = seatRepo.GetAllSeat2deKlasse(travelplan /*, wagonnumber*/);

                TrainViewModel seatView = new TrainViewModel()
                {
                    Seats = seats
                };

                return(View(seatView));
            }
        }
コード例 #25
0
        public async Task UpdateSkillPointsAsync_ShouldSetNewSkillPointsCorrectly()
        {
            var trainViewModel = new TrainViewModel()
            {
                Striking  = 70,
                Grappling = 70,
                Wrestling = 70,
                Stamina   = 70,
                Health    = 70,
                Strenght  = 70,
            };

            await this.skillsService.UpdateSkillPointsAsync(trainViewModel, 1);

            var updatedSkill = await this.skillsRepository.All().FirstAsync();

            Assert.Equal(70, updatedSkill.Striking);
            Assert.Equal(70, updatedSkill.Grappling);
            Assert.Equal(70, updatedSkill.Wrestling);
            Assert.Equal(70, updatedSkill.Strenght);
            Assert.Equal(70, updatedSkill.Stamina);
            Assert.Equal(70, updatedSkill.Health);
        }
コード例 #26
0
        public IHttpActionResult Train(TrainViewModel trainViewModel)
        {
            var faceBitmap = trainViewModel.GetImage();
            var faceRecognitionTrainingStatus = _faceDetectionLibrary.TrainFaceRecognition(faceBitmap, trainViewModel.Person);

            switch (faceRecognitionTrainingStatus)
            {
            case FaceDetection.Library.Models.FaceRecognitionTrainingStatus.TrainingSuccessful:
                return(Ok());

            case FaceDetection.Library.Models.FaceRecognitionTrainingStatus.FoundMoreThenOneFace:
                return(BadRequest("Found more then one face."));

            case FaceDetection.Library.Models.FaceRecognitionTrainingStatus.NoFacesFound:
                return(BadRequest("No faces found."));

            case FaceDetection.Library.Models.FaceRecognitionTrainingStatus.TrainingFailure:
                return(BadRequest("Training failure."));

            default:
                return(BadRequest());
            }
        }
コード例 #27
0
        public virtual ActionResult NetSettings(string id = null, TrainViewModel model = null)
        {
            if (ModelState.IsValid)
            {
                if (string.IsNullOrWhiteSpace(id))
                {
                    model.NetId = trainStorageManager.CreateSafeNetId(DateTime.UtcNow.ToString("yyyy-MM-dd-hh-mm-ss-") + model.NetName);
                }
                else
                {
                    model.NetId = trainStorageManager.CreateSafeNetId(id);
                }

                model.HiddenLayersSizes = parseInts(model.HiddenLayersSizesStr);
                bool hlValid = model.HiddenLayersSizes != null &&
                               model.HiddenLayersSizes.All(s => s > 0 && s < 65536);
                if (hlValid)
                {
                    if (trainStorageManager.SaveTrainSettings(model.NetId, model.ShallowCloneAs <TrainSettings>()))
                    {
                        return(RedirectToAction(Actions.Details(model.NetId)));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Failed to save train settings.");
                    }
                }
                else
                {
                    ModelState.AddModelError("HiddenLayersSizesStr", "Invalid hidden layer sizes.");
                }
            }

            initModel(model);
            return(View(model));
        }
        /// <summary>
        /// 表單送出觸發事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SaveBtn_Click(object sender, EventArgs e)
        {
            //送簽文件ID
            string signID = Request["SignDocID_FK"];

            //取得資料庫連線字串並建立DB模型
            _trainDetaiRepo = RepositoryFactory.CreateTrainDetailRepo();
            //欲作業的表格對象代碼
            string trainTableID = ((int)TrainingTableTypeEnum.TABLE02).ToString().PadLeft(2, '0');

            //取得頁面資料
            model = PageDataBind();

            #region #0015 取得登入者ID 擴充可幫他人填寫受訓心得表

            var empDc    = ConnectionFactory.GetPortalDC();
            var empRepos = new EmployeeRepository(empDc, new RootRepository(empDc));
            EmployeeViewModel empResult = empRepos.GetEmployeeDataByADAccount(User.Identity.Name);
            (model as RinnaiForms).ApplyID_FK = empResult.EmployeeID;

            #endregion #0015 取得登入者ID 擴充可幫他人填寫受訓心得表

            List <DataRow> QuestionDataList = _trainDetaiRepo.QueryQuestionDataByTableID(trainTableID);

            String chkString = "";
            String ansString = "";
            txterror.Text = "";

            #region 遍歷所有題目 判斷是否有填答案

            QuestionDataList.All(row =>
            {
                //如果題目填答型態為文字
                if (row["ANSTYPE"].ToString() == "C")
                {
                    TextBox tmpbox = PlaceHolder1.FindControl("textbox" + row["serial_no"].ToString()) as TextBox;
                    ansString      = tmpbox.Text;
                    if (ansString == "")
                    {
                        chkString += "第" + row["serial_no"].ToString() + "題 不可空白!";
                    }
                }
                //如果題目填答型態為數字
                else if (row["ANSTYPE"].ToString() == "N")
                {
                    RadioButtonList tmprbl = (RadioButtonList)PlaceHolder1.FindControl("rbl" + row["serial_no"].ToString());
                    ansString = tmprbl.SelectedValue;
                    if (ansString == "")
                    {
                        chkString += "第" + row["serial_no"].ToString() + "題 不可空白!";
                    }
                }
                return(true);
            });

            #endregion 遍歷所有題目 判斷是否有填答案

            //有沒填的就直接回要面並顯示警示訊息
            if (chkString != "")
            {
                txterror.Text = chkString;
                return;
            }

            //回傳至頁面的訊息
            var responseMessage = "";
            try
            {
                var modelList = new List <RinnaiForms>();
                modelList.Add(model);

                //新增畫面(即未傳入簽核ID)
                if (String.IsNullOrEmpty(signID))
                {
                    #region 建立簽核(送出簽核)

                    _trainDetaiRepo.CreateSignData(modelList);

                    #endregion 建立簽核(送出簽核)

                    string classID   = Request["CLID"];
                    string studentID = Request["SID"];

                    #region 先刪後增

                    #region 刪除答案

                    //刪除課程與簽核的關聯檔
                    _trainDetaiRepo.FromTableNameDeleteValue("FORM_SIGN", classID, studentID, trainTableID);
                    //===刪除全部原有答案===
                    //文字型態
                    _trainDetaiRepo.FromTableNameDeleteValue("CHARACTER_ANSWER", classID, studentID, trainTableID);
                    //數字型態
                    _trainDetaiRepo.FromTableNameDeleteValue("NUMERIC_ANSWER", classID, studentID, trainTableID);

                    #endregion 刪除答案

                    #region 新增答案

                    QuestionDataList.All(row =>
                    {
                        //文字類型
                        if (row["ANSTYPE"].ToString() == "C")
                        {
                            //新增
                            TextBox tmpbox = PlaceHolder1.FindControl("textbox" + row["serial_no"].ToString()) as TextBox;
                            _trainDetaiRepo.AddAnswer_C(Request["CLID"].ToString(), Request["SID"].ToString(), row["TABLE_ID"].ToString(), row["QNO"].ToString(), row["serial_no"].ToString(), tmpbox.Text, User.Identity.Name);
                        }
                        //數字類型
                        else if (row["ANSTYPE"].ToString() == "N")
                        {
                            //新增
                            RadioButtonList tmprbl = (RadioButtonList)PlaceHolder1.FindControl("rbl" + row["serial_no"].ToString());
                            _trainDetaiRepo.AddAnswer_N(Request["CLID"].ToString(), Request["SID"].ToString(), row["TABLE_ID"].ToString(), row["QNO"].ToString(), row["serial_no"].ToString(), tmprbl.SelectedValue, User.Identity.Name);
                        }
                        return(true);
                    });

                    #endregion 新增答案

                    #endregion 先刪後增

                    string EID = _trainDetaiRepo.Find_EDITIONID(trainTableID);
                    bool   hasEmptySignFormRecords = _trainDetaiRepo.CheckHasSignFormRecords(Request["CLID"].ToString(), trainTableID, EID);

                    //寫入空白單記錄
                    if (!hasEmptySignFormRecords)
                    {
                        _trainDetaiRepo.AddRECORDS(Request["CLID"].ToString(), trainTableID, EID);
                    }

                    #region 建立關聯簽核主檔

                    _trainDetaiRepo.AddFormSign(Request["CLID"].ToString(), Request["SID"].ToString(), trainTableID, false, modelList);

                    #endregion 建立關聯簽核主檔
                }

                //編輯畫面
                else
                {
                    //送出簽核
                    _trainDetaiRepo.EditData(modelList);

                    //刪除原有答案
                    string strCLID = _trainDetaiRepo.Find_CLID(Request["SignDocID_FK"]);
                    string strSID  = _trainDetaiRepo.Find_SID(Request["SignDocID_FK"]);

                    _trainDetaiRepo.FromTableNameDeleteValue("CHARACTER_ANSWER", strCLID, strSID, trainTableID);
                    _trainDetaiRepo.FromTableNameDeleteValue("NUMERIC_ANSWER", strCLID, strSID, trainTableID);

                    QuestionDataList.All(row =>
                    {
                        if (row["ANSTYPE"].ToString() == "C")//填文字
                        {
                            //新增
                            TextBox tmpbox = PlaceHolder1.FindControl("textbox" + row["serial_no"].ToString()) as TextBox;
                            _trainDetaiRepo.AddAnswer_C(strCLID, strSID, row["TABLE_ID"].ToString(), row["QNO"].ToString(), row["serial_no"].ToString(), tmpbox.Text, User.Identity.Name);
                        }
                        else if (row["ANSTYPE"].ToString() == "N")
                        {
                            //新增
                            RadioButtonList tmprbl = (RadioButtonList)PlaceHolder1.FindControl("rbl" + row["serial_no"].ToString());
                            _trainDetaiRepo.AddAnswer_N(strCLID, strSID, row["TABLE_ID"].ToString(), row["QNO"].ToString(), row["serial_no"].ToString(), tmprbl.SelectedValue, User.Identity.Name);
                        }
                        return(true);
                    });

                    String EID = _trainDetaiRepo.Find_EDITIONID(trainTableID);
                    bool   hasEmptySignFormRecords = _trainDetaiRepo.CheckHasSignFormRecords(strCLID, trainTableID, EID);
                    //寫入空白單記錄
                    if (!hasEmptySignFormRecords)
                    {
                        _trainDetaiRepo.AddRECORDS(strCLID, trainTableID, EID);
                    }
                }
                responseMessage = "送出成功!";

                #region 寄送email通知

                MailInfo mailInfo = new MailInfo()
                {
                    AddresseeTemp = System.Web.Configuration.WebConfigurationManager.AppSettings["MailTemplate"],
                    Subject       = String.Format("系統提醒!簽核單號 : {0} 已經送達!", model.SignDocID_FK),
                    DomainPattern = ConfigUtils.ParsePageSetting("Pattern")["DomainPattern"],
                };

                // 主管簽核 會簽 mail
                var deptData = _rootRepo.QueryForDepartmentByDeptID(model.DepartmentID_FK.ToString());
                var empData  = _rootRepo.QueryForEmployeeByEmpID(deptData["ChiefID_FK"].ToString());
                var chiefAD  = empData["ADAccount"].ToString();
                mailInfo.To += String.Format(mailInfo.AddresseeTemp, chiefAD) + ",";

                var portalDomain = ConfigUtils.ParsePageSetting("Domain")["Portal"];

                string body =
                    MailTools.BodyToTable(
                        String.Format(
                            @"系統提醒!簽核單號 : {0} 已經送達,請儘速檢視!<br /><a href='{1}/Area/Sign/ProcessWorkflowList.aspx?queryText={0}'>連結</a> <br />此件為系統發送,請勿回覆!",
                            model.SignDocID_FK, portalDomain));

                mailInfo.Body.Append(body);

                mailInfo.CC = new List <string>()
                {
                    String.Format(mailInfo.AddresseeTemp, User.Identity.Name)
                };
                mailInfo.To = mailInfo.To.TrimEnd(new char[] { ',' });
                if (PublicRepository.CurrentWorkflowMode == Enums.WorkflowTypeEnum.RELEASE)
                {
                    new Mailer(mailInfo).SendMail();
                }

                #endregion 寄送email通知

                _log.Trace(String.Format("MailTo : {0}\r\ncc : {1}\r\nTitle : {2}\r\nContent : {3}\r\n", mailInfo.To, String.Join(",", mailInfo.CC), mailInfo.Subject, mailInfo.Body));
                //btn處理
                ViewUtils.ButtonOn(SaveBtn, CoverBtn);
                responseMessage = responseMessage.ToAlertAndRedirect(@"/Area/Sign/WorkflowQueryList.aspx?orderField=CreateDate&descending=True");
            }
            catch (Exception ex)
            {
                responseMessage = String.Concat("送出失敗!\r\n錯誤訊息: ", ex.Message).ToAlertFormat();
                ViewUtils.ShowRefreshBtn(CoverBtn, RefreshBtn);
            }
            finally
            {
                Response.Write(responseMessage);
            }
        }
コード例 #29
0
 public void SetUp()
 {
     service   = new Mock <IWorkoutsService>();
     viewModel = new TrainViewModel(service.Object);
     viewModel.ShouldAlwaysRaiseInpcOnUserInterfaceThread(false);
 }
コード例 #30
0
        /// <summary>
        /// 建立簽核檔以及明細歷程
        /// </summary>
        /// <param name="modelList"></param>
        public void CreateSignData(List <RinnaiForms> modelList)
        {
            //建立簽核ID

            string newSignID = string.Empty;

            #region 取出view傳來的model

            TrainViewModel model = modelList.Cast <TrainViewModel>().First();
            newSignID = GetSeqIDUtils.GetSignDocID(model.Creator, "TR");
            DataRow employeeData = _rootRepo.QueryForEmployeeByEmpID(model.SID);
            if (String.IsNullOrWhiteSpace(newSignID))
            {
                throw new Exception("無法建立簽核ID,或系統忙碌中。請聯絡系統管理員!");
            }
            model.SignDocID_FK    = newSignID;
            model.DepartmentID_FK = employeeData != null ? employeeData["DepartmentID_FK"].ToString() : String.Empty;
            //已經帶入登入者的ID
            //model.ApplyID_FK = employeeData != null ? employeeData["EmployeeID"].ToString() : String.Empty;
            //基底model成員

            #endregion 取出view傳來的model

            //欲寫入的簽核狀態
            string status         = ((int)SignTypeEnum.READYSIGN).ToString();
            var    createDateTime = DateTime.UtcNow.AddHours(8);

            #region 取得簽屬程序

            var procedureData = _rootRepo.QueryForSignProcedureByRuleID(model.RuleID_FK);

            #endregion 取得簽屬程序

            //SignLevel =>需簽核層數
            var remainder = procedureData != null?Int32.Parse(procedureData["SignLevel"].ToString()) : -1;

            //判斷 FlowRule
            if (!_pwfRepo.IsFollowFlowRule(model.RuleID_FK, model.DepartmentID_FK))
            {
                throw new Exception("不符合簽核規則,無法新增!");
            }

            #region 取得簽核人員部門資料

            var deptData = _rootRepo.QueryForDepartmentByDeptID(model.DepartmentID_FK);
            if (deptData == null)
            {
                throw new Exception("查無簽核人員所屬部門資料!");
            }
            var upperDeptData          = _pwfRepo.FindUpperDeptData(model.DepartmentID_FK, model.SID);
            var chiefID                = upperDeptData.Keys.Single();
            var currentSignLevelDeptID = upperDeptData.Values.Single();

            #endregion 取得簽核人員部門資料

            //建立多筆SQL Conditons 語句
            var manipulationConditions = new List <MultiConditions>();

            #region 建立簽核主檔SQL語句

            var dic = new Conditions()
            {
                { "@SignDocID", model.SignDocID_FK },
                { "@FormID_FK", model.FormID_FK },
                { "@EmployeeID_FK", model.ApplyID_FK },
                { "@CurrentSignLevelDeptID_FK", currentSignLevelDeptID },
                { "@FinalStatus", status },
                { "@remainder", remainder },
                { "@Creator", model.Creator },
                { "@CreateDate", createDateTime },
                { "@SendDate", createDateTime },
            };
            // 利用DB Method建立Insert語句 , 並利用靜態字典 兜出資料庫與Table名稱  RinnaiPortal..signform_main
            var strSQL = _dc.ConstructInsertDML(RepositoryFactory.PotalConn["Catelog"] + "..signform_main", dic);
            manipulationConditions.Add(new MultiConditions()
            {
                { strSQL, dic }
            });

            #endregion 建立簽核主檔SQL語句

            #region 建立簽核明細檔SQL語句

            dic = new Conditions()
            {
                { "@SignDocID_FK", model.SignDocID_FK },
                { "@ChiefID_FK", chiefID },
                { "@Status", status },
                { "@Creator", model.Creator },
                { "@CreateDate", createDateTime },
            };
            strSQL = _dc.ConstructInsertDML(RepositoryFactory.PotalConn["Catelog"] + "..signform_detail", dic);
            manipulationConditions.Add(new MultiConditions()
            {
                { strSQL, dic }
            });

            #endregion 建立簽核明細檔SQL語句

            #region 建立簽核歷程檔SQL語句

            dic = new Conditions()
            {
                { "@SignDocID_FK", model.SignDocID_FK },
                { "@FormID_FK", model.FormID_FK },
                { "@EmployeeID_FK", model.ApplyID_FK },
                { "@SendDate", createDateTime },
                { "@CurrentSignLevelDeptID_FK", currentSignLevelDeptID },
                { "@FinalStatus", status },
                { "@remainder", remainder },
                { "@Creator_Main", model.Creator },
                { "@CreateDate_Main", createDateTime },
                { "@DetailSignDocID_FK", model.SignDocID_FK },
                { "@ChiefID_FK", chiefID },
                { "@Status", status },
                { "@Creator_Detail", model.Creator },
                { "@CreateDate_Detail", createDateTime },
                { "@LogDatetime", DateTime.Now },
            };
            strSQL = _dc.ConstructInsertDML(RepositoryFactory.PotalConn["Catelog"] + "..signform_log", dic);
            manipulationConditions.Add(new MultiConditions()
            {
                { strSQL, dic }
            });

            #endregion 建立簽核歷程檔SQL語句

            try
            {
                if (!_dc.ExecuteMultAndCheck(manipulationConditions))
                {
                    throw new Exception("新增受訓心得報告失敗!");
                }
            }
            catch (Exception ex)
            {
                throw new Exception("新增受訓心得報告失敗! system errorMessages :" + ex.Message);
            }
        }