コード例 #1
0
        public ActionResult Details(int id = 0)
        {
            int?position = null;

            if (Session["PositionId"] != null)
            {
                position = int.Parse(Session["PositionId"]?.ToString());
            }
            ViewBag.Emps = _hrUnitOfWork.CheckListRepository.GetManagerEmpList(User.Identity.GetEmpId(), position, CompanyId, Language);

            EmpTask oldTask = _hrUnitOfWork.Repository <EmpTask>().Where(t => t.ManagerId == User.Identity.GetEmpId()).OrderByDescending(t => t.TaskNo).FirstOrDefault();

            if (id == 0)
            {
                return(View(new EmpTasksViewModel()
                {
                    TaskNo = (short)(oldTask != null ? (oldTask.TaskNo + 1) : 1),
                    AssignedTime = DateTime.Now, Status = 1
                }));
            }

            EmpTasksViewModel task = _hrUnitOfWork.CheckListRepository.GetManagerEmpTask(id);

            return(task == null ? (ActionResult)HttpNotFound() : View(task));
        }
コード例 #2
0
        public EmpTasksViewModel GetEmployeeTask(int Id, string culture)
        {
            EmpTasksViewModel task = context.EmpTasks.Where(t => t.Id == Id)
                                     .Select(t => new EmpTasksViewModel
            {
                Id           = t.Id,
                EmpList      = t.EmpChklist.Name,
                Manager      = HrContext.TrlsName(t.Manager.Title + " " + t.Manager.FirstName + " " + t.Manager.Familyname, culture),
                Description  = t.Description,
                Priority     = t.Priority,
                Status       = t.Status,
                TaskCategory = HrContext.GetLookUpCode("EmpTaskCat", t.TaskCat.Value, culture),
                TaskNo       = t.TaskNo,
                AssignedTime = t.AssignedTime,
                Attachments  = HrContext.GetAttachments("EmpTasksForm", t.Id),
                StartTime    = t.StartTime,
                EndTime      = t.EndTime,
                Duration     = t.Duration,
                EmpListId    = t.EmpListId,
                ExpectDur    = t.ExpectDur,
                Unit         = t.Unit,
                Required     = t.Required,
                Employee     = HrContext.TrlsName(t.EmpChklist.Employee.Title + " " + t.EmpChklist.Employee.FirstName + " " + t.EmpChklist.Employee.Familyname, culture),
            }).FirstOrDefault();

            return(task);
        }
コード例 #3
0
        public EmpTasksViewModel GetManagerEmpTask(int Id)
        {
            EmpTasksViewModel task = context.EmpTasks.Where(t => t.Id == Id)
                                     .Select(t => new EmpTasksViewModel
            {
                Id           = t.Id,
                Description  = t.Description,
                Priority     = t.Priority,
                Status       = t.Status,
                TaskCat      = t.TaskCat,
                TaskNo       = t.TaskNo,
                AssignedTime = t.AssignedTime,
                Attachments  = HrContext.GetAttachments("EmpTasksForm", t.Id),
                StartTime    = t.StartTime,
                EndTime      = t.EndTime,
                Duration     = t.Duration,
                EmpListId    = t.EmpListId,
                ExpectDur    = t.ExpectDur,
                Unit         = t.Unit,
                Required     = t.Required,
                EmpId        = t.EmpId
            }).FirstOrDefault();

            return(task);
        }
コード例 #4
0
        public IHttpActionResult EmployeeTasksDetails(int id = 0)
        {
            EmpTasksViewModel task = _hrUnitOfWork.CheckListRepository.GetEmployeeTask(id, User.Identity.GetLanguage());

            if (task == null)
            {
                return(NotFound());
            }

            return(Ok(task));
        }
コード例 #5
0
        public ActionResult EmployeeTasksDetails(int id)
        {
            EmpTasksViewModel task = _hrUnitOfWork.CheckListRepository.GetEmployeeTask(id, Language);

            return(task == null ? (ActionResult)HttpNotFound() : View(task));
        }
コード例 #6
0
        public ActionResult Details(EmpTasksViewModel model, OptionsViewModel moreInfo)
        {
            List <Error> errors = new List <Error>();

            if (ModelState.IsValid)
            {
                if (ServerValidationEnabled)
                {
                    errors = _hrUnitOfWork.CompanyRepository.CheckForm(new CheckParm
                    {
                        CompanyId    = CompanyId,
                        ObjectName   = "EmpTasksForm",
                        TableName    = "EmpTasks",
                        Columns      = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))),
                        ParentColumn = "CompanyId",
                        Culture      = Language
                    });

                    if (errors.Count() > 0)
                    {
                        foreach (var e in errors)
                        {
                            foreach (var errorMsg in e.errors)
                            {
                                ModelState.AddModelError(errorMsg.field, errorMsg.message);
                            }
                        }
                        return(Json(Models.Utils.ParseFormErrors(ModelState)));
                    }
                }
            }
            else
            {
                return(Json(Models.Utils.ParseFormErrors(ModelState)));
            }

            EmpTask task = _hrUnitOfWork.CheckListRepository.GetEmpTask(model.Id);

            byte version;

            byte.TryParse(Request.Form["version"], out version);
            string message = "OK,";

            //Check 1.Subperiod is defiend, 2.Done tasks is started
            if (model.Status == 1) //1-AssignTo
            {
                if (model.AssignedTime == null)
                {
                    model.AssignedTime = DateTime.Now;
                }

                int?   subPeriod;
                string error = _hrUnitOfWork.CheckListRepository.GetTaskSubPeriod(CompanyId, model.AssignedTime, Language, out subPeriod);
                if (error.Length > 0)
                {
                    ModelState.AddModelError("AssignedTime", error);
                    return(Json(Models.Utils.ParseFormErrors(ModelState)));
                }
                model.SubPeriodId = subPeriod;
            }
            else if (model.Status == 2) //2-Done
            {
                if (model.StartTime == null || model.StartTime > DateTime.Now)
                {
                    ModelState.AddModelError("Status", MsgUtils.Instance.Trls("TaskNotStarted"));
                    return(Json(Models.Utils.ParseFormErrors(ModelState)));
                }
                model.EndTime = DateTime.Now;
            }


            ///Save
            if (model.Id == 0)
            { /// New
                task = new EmpTask();

                AutoMapper(new AutoMapperParm()
                {
                    Source = model, Destination = task, Version = version, ObjectName = "EmpTasksForm", Options = moreInfo
                });
                task.SubPeriodId = model.SubPeriodId;
                task.CreatedUser = UserName;
                task.CreatedTime = DateTime.Now;
                _hrUnitOfWork.CheckListRepository.Add(task);
            }
            else if (model.ChangeEmployee)
            {
                EmpTask oldTask  = _hrUnitOfWork.CheckListRepository.GetEmpTask(model.Id);
                var     oldEmpId = oldTask.EmpId;
                //check emp changed
                if (oldEmpId == model.EmpId)
                {
                    return(Json(MsgUtils.Instance.Trls("ChangeToSameEmp")));
                }

                //assign to new Emp
                task = new EmpTask();
                AutoMapper(new AutoMapperParm()
                {
                    Source = model, Destination = task, Version = version, ObjectName = "EmpTasksForm", Options = moreInfo
                });
                task.Status       = 1; //1-AssignTo
                task.AssignedTime = DateTime.Now;

                int?   subPeriod;
                string error = _hrUnitOfWork.CheckListRepository.GetTaskSubPeriod(CompanyId, model.AssignedTime, Language, out subPeriod);
                if (error.Length > 0)
                {
                    ModelState.AddModelError("AssignedTime", error);
                    return(Json(Models.Utils.ParseFormErrors(ModelState)));
                }
                task.SubPeriodId = subPeriod;

                task.CreatedUser = UserName;
                task.CreatedTime = DateTime.Now;

                _hrUnitOfWork.CheckListRepository.Add(task);

                //cancel from current Emp
                AutoMapper(new AutoMapperParm()
                {
                    Source = model, Destination = oldTask, Version = version, ObjectName = "EmpTasksForm", Options = moreInfo
                });
                oldTask.EmpId        = oldEmpId;
                oldTask.Status       = 3; //3-cancel
                oldTask.ModifiedUser = UserName;
                oldTask.ModifiedTime = DateTime.Now;

                _hrUnitOfWork.CheckListRepository.Attach(oldTask);
                _hrUnitOfWork.CheckListRepository.Entry(oldTask).State = EntityState.Modified;
            }
            else
            { /// Edit
                if (task.EmpId != model.EmpId)
                {
                    return(Json(MsgUtils.Instance.Trls("ClickChangeEmp")));
                }

                AutoMapper(new AutoMapperParm()
                {
                    Source = model, Destination = task, Version = version, ObjectName = "EmpTasksForm", Options = moreInfo
                });
                task.ModifiedUser = UserName;
                task.ModifiedTime = DateTime.Now;

                _hrUnitOfWork.CheckListRepository.Attach(task);
                _hrUnitOfWork.CheckListRepository.Entry(task).State = EntityState.Modified;

                if (task.Status == 2 || task.Status == 4) //2-Done, 4-Not Done
                {
                    _hrUnitOfWork.CheckListRepository.AssignNextTask(task);
                }
            }

            var Errors = SaveChanges(Language);

            if (Errors.Count > 0)
            {
                message = Errors.First().errors.First().message;
            }
            else
            {
                message = message + ((new JavaScriptSerializer()).Serialize(model));
            }
            return(Json(message));
        }
コード例 #7
0
        public IHttpActionResult SaveTask(EmpTasksViewModel model)
        {
            EmpTask task = _hrUnitOfWork.CheckListRepository.GetEmpTask(model.Id);

            if (model.isStart) //Start
            {
                _hrUnitOfWork.LeaveRepository.AddTrail(new AddTrailViewModel {
                    ColumnName = "StartTime", ValueBefore = task.StartTime.ToString(), ValueAfter = DateTime.Now.ToString(), ObjectName = "EmpTasksForm", CompanyId = User.Identity.GetDefaultCompany(), SourceId = task.Id.ToString(), UserName = User.Identity.Name
                });
                if (task.StartTime != null)
                {
                    return(Ok(MsgUtils.Instance.Trls("TaskAlreadyStarted")));
                }
                task.StartTime = DateTime.Now;
            }
            else
            {
                _hrUnitOfWork.LeaveRepository.AddTrail(new AddTrailViewModel {
                    ColumnName = "EndTime", ValueBefore = task.EndTime.ToString(), ValueAfter = DateTime.Now.ToString(), ObjectName = "EmpTasksForm", CompanyId = User.Identity.GetDefaultCompany(), SourceId = task.Id.ToString(), UserName = User.Identity.Name
                });
                _hrUnitOfWork.LeaveRepository.AddTrail(new AddTrailViewModel {
                    ColumnName = "Status", ValueBefore = task.Status.ToString(), ValueAfter = "2", ObjectName = "EmpTasksForm", CompanyId = User.Identity.GetDefaultCompany(), SourceId = task.Id.ToString(), UserName = User.Identity.Name
                });

                task.EndTime = DateTime.Now;
                task.Status  = 2;
                TimeSpan duration = task.EndTime.Value - task.StartTime.Value;

                switch (task.Unit)
                {
                case 0:    //Minutes
                    task.Duration = Convert.ToSByte(duration.Minutes);
                    break;

                case 1:     //Hours
                    task.Duration = Convert.ToSByte(duration.Hours);
                    break;

                case 2:     //Days
                    task.Duration = Convert.ToSByte(duration.Days);
                    break;

                case 3:     //Weeks
                    task.Duration = Convert.ToSByte(duration.Days / 7);
                    break;

                case 4:     //Months
                    task.Duration = Convert.ToSByte(duration.Days / 365.25 * 12);
                    break;
                }
                _hrUnitOfWork.LeaveRepository.AddTrail(new AddTrailViewModel {
                    ColumnName = "Status", ValueBefore = "", ValueAfter = task.Duration.ToString(), ObjectName = "EmpTasksForm", CompanyId = User.Identity.GetDefaultCompany(), SourceId = task.Id.ToString(), UserName = User.Identity.Name
                });
                _hrUnitOfWork.CheckListRepository.AssignNextTask(task);
            }
            task.ModifiedTime = DateTime.Now;
            task.ModifiedUser = User.Identity.Name;

            _hrUnitOfWork.CheckListRepository.Attach(task);
            _hrUnitOfWork.CheckListRepository.Entry(task).State = EntityState.Modified;

            string message = "Ok";
            var    Errors  = SaveChanges(User.Identity.GetLanguage());

            if (Errors.Count > 0)
            {
                message = Errors.First().errors.First().message;
            }

            return(Json(message));
        }