Esempio n. 1
0
        public ActionResult Export(DateRange model)
        {
            var    ctx      = new TaskAssignmentModel();
            var    tasks    = ctx.Tasks.Where(t => t.Date >= model.Start && t.Date <= model.Finish).OrderBy(t => t.Date);
            string template = Server.MapPath("~/Content/templates/template-task.xlsx");
            string filename = "";

            if (model.Start == model.Finish)
            {
                filename = model.Start.ToString("MM.dd") + " 工作安排.xlsx";
            }
            else
            {
                filename = model.Start.ToString("MM.dd") + "-" + model.Finish.ToString("MM.dd") + " 工作安排.xlsx";
            }
            string exported = Server.MapPath("~/Content/exported/" + filename);

            try {
                ExcelHelper.Export(tasks, template, exported);
            }
            catch (Exception ex) {
                Global.Logger.AppendLog(ex);
            }

            if (System.IO.File.Exists(exported))
            {
                FilePathResult result = new FilePathResult(exported, ExcelHelper.XlsxContentType);
                result.FileDownloadName = filename;
                return(result);
            }
            else
            {
                return(RedirectToAction("Error"));
            }
        }
Esempio n. 2
0
        public ActionResult Edit(AddTask model)
        {
            if (model != null && model.Task != null && model.Task.Id > 0)
            {
                var ctx  = new TaskAssignmentModel();
                var task = ctx.Tasks.SingleOrDefault(t => t.Id == model.Task.Id);
                ctx.Assigns.RemoveRange(task.Assigns);

                task.ConditionId  = model.Task.ConditionId;
                task.Content      = model.Task.Content;
                task.Date         = model.Task.Date;
                task.SubstationId = model.Task.SubstationId;
                task.TypeId       = model.Task.TypeId;

                //task.Visible = model.Task.Visible;
                // Notice: Attendance cascaded delete has been implement in DB by trigger


                if (model.LeaderId > 0)
                {
                    Assign leader = new Assign();
                    leader.MemberId = model.LeaderId;
                    leader.IsLeader = true;
                    leader.TaskId   = task.Id;
                    ctx.Assigns.Add(leader);

                    Attendance att = new Attendance();
                    att.TaskId     = model.Task.Id;
                    att.MemberId   = model.LeaderId;
                    att.TypeId     = Type4Outdoor; // The Type of outside work in DB is 2 (reffer to AttendanceType)
                    att.StartDate  = task.Date;
                    att.FinishDate = task.Date;

                    ctx.Attendances.Add(att);
                }

                foreach (var item in model.MemberId)
                {
                    Assign asg = new Assign();
                    asg.MemberId = item;
                    asg.IsLeader = false;
                    asg.TaskId   = task.Id;

                    Attendance att = new Attendance();
                    att.TaskId     = model.Task.Id;
                    att.MemberId   = item;
                    att.TypeId     = Type4Outdoor; // The Type of outside work in DB is 2 (reffer to AttendanceType)
                    att.StartDate  = task.Date;
                    att.FinishDate = task.Date;
                    ctx.Assigns.Add(asg);
                    ctx.Attendances.Add(att);
                }
                ctx.SaveChanges();
            }
            if (string.IsNullOrEmpty(model.ReturnAction))
            {
                model.ReturnAction = "Add";
            }
            return(RedirectToAction(model.ReturnAction));
        }
Esempio n. 3
0
        public ActionResult Delete(int id, string rtnact)
        {
            var ctx  = new TaskAssignmentModel();
            var task = ctx.Tasks.SingleOrDefault(t => t.Id == id);

            var asg = ctx.Assigns.Where(a => a.TaskId == id);

            if (asg != null && asg.Count() > 0)
            {
                ctx.Assigns.RemoveRange(asg);
            }

            // Notice: Attendance cascaded delete has been implement in DB by trigger

            if (task != null && task.Id != 0)
            {
                ctx.Tasks.Remove(task);
                ctx.SaveChanges();
                // Won't work currently
                //ViewBag.Success = true;
                //ViewBag.Message = "该工作已删除。";
            }
            if (rtnact == null || rtnact.Length == 0)
            {
                return(RedirectToAction("Add"));
            }
            else
            {
                return(RedirectToAction(rtnact));
            }
        }
        public ActionResult All()
        {
            var ctx  = new TaskAssignmentModel();
            var list = ctx.Substations.DefaultIfEmpty();

            return(View(list));
        }
Esempio n. 5
0
        public JsonResult Details(string id)
        {
            int        month  = DateTime.Parse(id).Month;
            var        ctx    = new TaskAssignmentModel();
            var        model  = ctx.Attendances.Where(att => att.StartDate.Month == month);
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            result.ContentEncoding     = System.Text.Encoding.UTF8;

            if (model != null && model.Count() > 0)
            {
                List <object> data = new List <object>();
                foreach (var item in model)
                {
                    data.Add(new {
                        MemberId = item.MemberId,
                        TypeId   = item.TypeId,
                        Alias    = item.AttendanceType.Alias,
                        Symbol   = item.AttendanceType.Symbol,
                        Start    = item.StartDate.ToString("yyyy-MM-dd"),
                        Finish   = item.FinishDate.ToString("yyyy-MM-dd")
                    });
                }
                result.Data = data;
                return(result);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 6
0
        public ActionResult AllList()
        {
            var ctx   = new TaskAssignmentModel();
            var model = ctx.Members.DefaultIfEmpty();

            return(View("_AllList", model));
        }
Esempio n. 7
0
        public ActionResult AllTaskTypeList()
        {
            var ctx      = new TaskAssignmentModel();
            var typeList = ctx.TaskTypes;

            return(View());
        }
Esempio n. 8
0
        public ActionResult Show(DateRange model)
        {
            var ctx  = new TaskAssignmentModel();
            var list = ctx.Tasks.Where(t => t.Date >= model.Start && t.Date <= model.Finish).OrderBy(t => t.Date);

            ViewBag.Start  = model.Start.ToString("yyyy年MM月dd日");
            ViewBag.Finish = model.Finish.ToString("yyyy年MM月dd日");
            return(View(list));
        }
Esempio n. 9
0
 public TaskAssignment TaskAssignmentModelToTaskAssignmentEntity(TaskAssignmentModel model)
 {
     return(new TaskAssignment
     {
         Id = model.Id,
         User = UserModelToUserEntity(model.User),
         Task = TaskModelToTaskEntity(model.Task)
     });
 }
Esempio n. 10
0
        public ActionResult Delete(long id)
        {
            var ctx  = new TaskAssignmentModel();
            var item = ctx.Attendances.SingleOrDefault(att => att.Id == id);

            ctx.Attendances.Remove(item);
            ctx.SaveChanges();
            return(RedirectToAction("Absent"));
        }
Esempio n. 11
0
        public void TaskAdd_Test()
        {
            var  ctx = new TaskAssignmentModel();
            Task t   = new Task();

            t.Content     = "Test task2";
            t.Date        = DateTime.Today;
            t.ConditionId = 2;
            t.TypeId      = 1;
            ctx.Tasks.Add(t);
            ctx.SaveChanges();
        }
Esempio n. 12
0
        public ActionResult Recent()
        {
            // Fetch the tasks that are already assigned this and the next  week
            var       ctx           = new TaskAssignmentModel();
            const int fortnight     = 14;
            DateTime  thisWeekbegin = DateTime.Today.WeekBegin(DayOfWeek.Monday);
            DateTime  nextWeekend   = thisWeekbegin.AddDays(fortnight - 1); // to next Sunday
            var       tasks         = ctx.Tasks
                                      .Where(t => t.Date >= thisWeekbegin && t.Date <= nextWeekend)
                                      .OrderBy(t => t.Assigns.Count);

            return(View("_Recent", tasks));
        }
        public ActionResult CreateUpdateTask(Int32 id)
        {
            var taskAssignModel = new TaskAssignmentModel();

            if (id > 0)
            {
                var taskAssign = FarmManagementEntities.TaskAssignments.Single(x => x.Id == id);
                taskAssignModel = taskAssign.ToType <TaskAssignment, TaskAssignmentModel>();

                taskAssignModel.TaskStatus  = Convert.ToInt32(taskAssign.Status.ParseEnum <TaskStatus>());
                taskAssignModel.TaskRemarks = Convert.ToInt32(taskAssign.Remarks.ParseEnum <TaskRemarks>());
            }

            return(PartialView("TaskAssignmentPartial", taskAssignModel));
        }
Esempio n. 14
0
        public ActionResult Export(DateTime id)
        {
            string template = Server.MapPath("~/Content/templates/template-attendance.xlsx");
            string exported = Server.MapPath("~/Content/exported/" + "考勤记录-" + id.ToString("yyyy-MM-dd") + ".xlsx");
            var    ctx      = new TaskAssignmentModel();
            var    members  = ctx.Members.Where(m => m.IsInternal && m.Enable);
            var    record   = ctx.Attendances.Where(att => att.StartDate.Month == id.Month &&
                                                    att.StartDate.Year == id.Year &&
                                                    att.Member.Enable);
            var absType    = ctx.AttendanceTypes.Where(t => t.IsAbsent);
            var t_holidays = ctx.Holidays.SingleOrDefault(h => h.Year == id.Year);
            var thd        = t_holidays.Holidays.Split(';').Where(h => h.StartsWith(id.ToString("MM") + "-")).ToArray();
            var tex        = t_holidays.ExtraWorkdays.Split(';').Where(e => e.StartsWith(id.ToString("MM") + "-")).ToArray();

            int[] holidays      = new int[thd.Count()];
            int[] extraWorkdays = new int[tex.Count()];
            for (int i = 0; i < holidays.Length; i++)
            {
                holidays[i] = Convert.ToInt32(thd[i].Substring(3));
            }
            for (int i = 0; i < extraWorkdays.Length; i++)
            {
                extraWorkdays[i] = Convert.ToInt32(tex[i].Substring(3));
            }

            try {
                Global.Logger.AppendLog("Export");
                ExcelHelper.Export(id, members, record, absType, holidays, extraWorkdays, template, exported);
            }
            catch (Exception ex) {
                Global.Logger.AppendLog(ex);
            }
            //GC.Collect();

            FilePathResult r;

            if (System.IO.File.Exists(exported))
            {
                r = new FilePathResult(exported, ExcelHelper.XlsxContentType);
                r.FileDownloadName = "考勤记录-" + id.ToString("yyyy-MM-dd") + ".xlsx";
                return(r);
            }
            else
            {
                Global.Logger.AppendLog("Error occured!");
                return(RedirectToAction("Error"));
            }
        }
Esempio n. 15
0
 public ActionResult Absent(DateTime?id)
 {
     // id refers to the objective month
     if (!id.HasValue)
     {
         return(View());
     }
     else
     {
         int month = id.Value.Month;
         var ctx   = new TaskAssignmentModel();
         var model = ctx.Attendances.Where(att => att.AttendanceType.IsAbsent && att.StartDate.Month == month);
         ViewBag.Date = id.Value.ToString("yyyy-MM");
         return(View(model));
     }
 }
Esempio n. 16
0
        public ActionResult TypeList(string id)
        {
            var ctx = new TaskAssignmentModel();
            IQueryable <AttendanceType> model = null;

            if (id != "absent")
            {
                model = ctx.AttendanceTypes.DefaultIfEmpty();
            }
            else
            {
                model = ctx.AttendanceTypes.Where(type => type.IsAbsent);
            }

            return(View("_TypeList", model));
        }
Esempio n. 17
0
        public ActionResult Edit(AddAbsence model)
        {
            var ctx  = new TaskAssignmentModel();
            var item = ctx.Attendances.SingleOrDefault(abs => abs.Id == model.Attendance.Id);

            item.MemberId   = model.Attendance.MemberId;
            item.StartDate  = model.Attendance.StartDate;
            item.FinishDate = model.Attendance.FinishDate;
            item.TypeId     = model.Attendance.TypeId;
            item.Comments   = model.Attendance.Comments;

            ctx.SaveChanges();

            string[] url = model.ReturnAction.Split('?');
            return(RedirectToAction(url[0], new { id = url[1].Split('=')[1] }));
        }
Esempio n. 18
0
        public ActionResult Add(AddTask model)
        {
            // Only invoke in Add.cshtml
            Task t   = model.Task;
            var  ctx = new TaskAssignmentModel();

            t.Visible = true;
            ctx.Tasks.Add(t);

            if (model.LeaderId > 0)
            {
                Assign leader = new Assign();
                leader.MemberId = model.LeaderId;
                leader.IsLeader = true;
                leader.TaskId   = t.Id;
                ctx.Assigns.Add(leader);

                Attendance att = new Attendance();
                att.TaskId     = t.Id;
                att.MemberId   = model.LeaderId;
                att.StartDate  = t.Date;
                att.FinishDate = t.Date;
                ctx.Attendances.Add(att);
            }

            foreach (var item in model.MemberId)
            {
                Assign asg = new Assign();
                asg.MemberId = item;
                asg.IsLeader = false;
                asg.TaskId   = t.Id;

                Attendance att = new Attendance();
                att.TaskId     = t.Id;
                att.MemberId   = item;
                att.TypeId     = Type4Outdoor; // The Type of outside work in DB is 2 (reffer to AttendanceType)
                att.StartDate  = t.Date;
                att.FinishDate = t.Date;
                ctx.Assigns.Add(asg);
                ctx.Attendances.Add(att);
            }
            ctx.SaveChanges();

            ViewBag.Success = true;
            ViewBag.Message = "该工作已添加。";
            return(View());
        }
Esempio n. 19
0
        public ActionResult AttendanceMemberList()
        {
            var ctx   = new TaskAssignmentModel();
            var model = ctx.Members.Where(m => m.Enable && m.IsInternal);

            //List<object> data = null;
            //if (model != null && model.Count() > 0) {
            //    data = new List<object>();
            //    foreach(var i in model) {
            //        data.Add(new {Id=i.Id,Enable=i.Enable,Name=i.Name });
            //    }
            //}

            //result.Data = data;
            //return result;
            return(View(model));
        }
Esempio n. 20
0
        public JsonResult Edit(long id)
        {
            var        ctx     = new TaskAssignmentModel();
            var        absence = ctx.Attendances.SingleOrDefault(att => att.Id == id);
            JsonResult result  = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            result.ContentEncoding     = System.Text.Encoding.UTF8;
            // start, finish date, name, typename, comment
            result.Data = new {
                Id         = absence.Id,
                StartDate  = absence.StartDate.ToString("yyyy-MM-dd"),
                FinishDate = absence.FinishDate.ToString("yyyy-MM-dd"),
                MemberId   = absence.MemberId,
                TypeId     = absence.TypeId,
                Comments   = absence.Comments
            };
            return(result);
        }
Esempio n. 21
0
        public JsonResult Edit(int id)
        {
            var ctx    = new TaskAssignmentModel();
            var task   = ctx.Tasks.SingleOrDefault(t => t.Id == id);
            var result = new JsonResult();

            result.ContentEncoding     = System.Text.Encoding.UTF8;
            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;


            var tmp_list = task.Assigns.Where(t => t.TaskId == id && !t.IsLeader).ToList();

            long[] m_id = null;
            if (tmp_list != null && tmp_list.Count > 0)
            {
                m_id = new long[tmp_list.Count];
                for (int i = 0; i < m_id.Length; i++)
                {
                    m_id[i] = tmp_list[i].MemberId;
                }
            }

            var  asg  = task.Assigns.SingleOrDefault(t => t.TaskId == id && t.IsLeader);
            long l_id = 0;

            if (asg != null)
            {
                l_id = asg.MemberId;
            }
            result.Data = new {
                Id           = task.Id,
                SubstationId = task.SubstationId,
                LocationId   = task.Substation.LocationId,
                Content      = task.Content,
                ConditionId  = task.ConditionId,
                Date         = task.Date.ToString("yyyy-MM-dd"),
                Visible      = task.Visible,
                TypeId       = task.TypeId,
                LeaderId     = l_id,
                MemberId     = m_id
            };
            return(result);
        }
Esempio n. 22
0
        public JsonResult UnavailableMemberList(DateTime id)
        {
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            var ctx = new TaskAssignmentModel();

            var tmp = ctx.Attendances.Where(att => att.StartDate <= id && att.FinishDate >= id && att.AttendanceType.IsAbsent).ToArray();

            if (tmp.Count() > 0)
            {
                long[] mIds = new long[tmp.Count()];
                for (int i = 0; i < mIds.Length; i++)
                {
                    mIds[i] = tmp[i].MemberId;
                }
                result.Data = mIds;
            }
            return(result);
        }
        public ActionResult CreateUpdateTask(TaskAssignmentModel taskAssignModel)
        {
            if (!ModelState.IsValid)
            {
                return(ShowErrorMessage(Constant.DefaultErrorMessage));
            }

            var taskAssign = new TaskAssignment();

            if (taskAssignModel.Id > 0)
            {
                taskAssign = FarmManagementEntities.TaskAssignments.Single(x => x.Id == taskAssignModel.Id);
            }

            taskAssign.TaskName          = taskAssignModel.TaskName;
            taskAssign.StaffNameId       = taskAssignModel.StaffNameId;
            taskAssign.Description       = taskAssignModel.Description;
            taskAssign.DeadlineStartDate = taskAssignModel.DeadlineStartDate;
            taskAssign.DeadlineEndDate   = taskAssignModel.DeadlineEndDate;

            taskAssign.Status  = taskAssignModel.TaskStatus == null ? null : ((TaskStatus)taskAssignModel.TaskStatus).ToString();
            taskAssign.Remarks = taskAssignModel.TaskRemarks == null ? null : ((TaskRemarks)taskAssignModel.TaskRemarks).ToString();

            if (taskAssignModel.Id == 0)
            {
                taskAssign.InsertDate = DateTime.Now;
                FarmManagementEntities.TaskAssignments.Add(taskAssign);
            }
            else
            {
                taskAssign.UpdateDate = DateTime.Now;
            }

            FarmManagementEntities.SaveChanges();

            var message = string.Format(Constant.SuccessMessage, taskAssignModel.Id > 0 ? "updated" : "added");

            return(ShowSuccessMessage(message));
        }
Esempio n. 24
0
        public ActionResult Add(AddAbsence model)
        {
            var ctx = new TaskAssignmentModel();

            ctx.Attendances.Add(model.Attendance);
            ctx.SaveChanges();
            string[] url;
            if (!string.IsNullOrEmpty(model.ReturnAction))
            {
                url = model.ReturnAction.Split('?');
                string act   = url[0];
                string query = "";
                if (url.Length > 1)
                {
                    query = url[1].Split('=')[1];
                }
                return(RedirectToAction(act, new { id = query }));
            }
            else
            {
                return(RedirectToAction("Absent"));
            }
        }