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")); } }
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)); }
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)); }
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); } }
public ActionResult AllList() { var ctx = new TaskAssignmentModel(); var model = ctx.Members.DefaultIfEmpty(); return(View("_AllList", model)); }
public ActionResult AllTaskTypeList() { var ctx = new TaskAssignmentModel(); var typeList = ctx.TaskTypes; return(View()); }
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)); }
public TaskAssignment TaskAssignmentModelToTaskAssignmentEntity(TaskAssignmentModel model) { return(new TaskAssignment { Id = model.Id, User = UserModelToUserEntity(model.User), Task = TaskModelToTaskEntity(model.Task) }); }
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")); }
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(); }
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)); }
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")); } }
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)); } }
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)); }
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] })); }
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()); }
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)); }
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); }
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); }
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)); }
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")); } }