public int CreateDocument(string document) { int result = 0; try { SessionManager.DoWork(session => { int year = DateTime.Now.Year; string pathVirtal = System.Configuration.ConfigurationManager.AppSettings["VanBanGuiDen"]; string pathPhysical = HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["VanBanGuiDen"]); string virtualFilePath = ConfigurationManager.AppSettings["FilesPath"] + "/" + year; string filePath = HttpContext.Current.Server.MapPath(virtualFilePath); VanbanGui vbg = null; Guid id = Guid.NewGuid(); // Tạo đường dẫn chứa file văn bản string Virtalpath = pathPhysical + DateTime.Now.Year.ToString() + "/" + DateTime.Now.Month.ToString() + "/" + DateTime.Now.Day.ToString() + "/"; //string path = HttpContext.Current.Server.MapPath(Virtalpath); if (!System.IO.Directory.Exists(Virtalpath)) { System.IO.Directory.CreateDirectory(Virtalpath); } // Lưu file xml vào thư mục XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(document); xdoc.Save(Virtalpath + id.ToString() + ".xml"); // Đọc file xml parse thành đối tượng VanBanGui XmlSerializer xmlser = new XmlSerializer(typeof(VanbanGui)); using (System.IO.Stream filetream = new FileStream(Virtalpath + id.ToString() + ".xml", FileMode.Open)) { filetream.Position = 0; vbg = (VanbanGui)xmlser.Deserialize(filetream); } // Insert văn bản vào database if (vbg != null) { foreach (To to in vbg.Messageheader.To) { string did = to.OrganId; StaffApiController sc = new StaffApiController(); //Guid leaderId = new Guid(sc.GetDepartmentLeaderId(new Guid(did))); Guid toDepartmentId = session.Query <EOfficeHRMDepartment>().SingleOrDefault(h => h.EOfficeDepartmentId.ToString() == did).DepartmentId; PlanStaff plst = session.Query <PlanStaff>().SingleOrDefault(p => p.Department.Id == toDepartmentId && p.PlanKPI.StartTime.Month == DateTime.Now.Month && p.PlanKPI.StartTime.Year == DateTime.Now.Year); PlanKPIDetail planDetail = new PlanKPIDetail(); planDetail.TargetDetail = vbg.Subject; planDetail.Id = Guid.NewGuid(); planDetail.Name = vbg.Messageheader.From.Name; planDetail.PlanStaff = plst; planDetail.CreateTime = DateTime.Now; planDetail.IsAddition = true; planDetail.IsFromEoffice = true; planDetail.StartTime = plst.PlanKPI.StartTime; planDetail.EndTime = plst.PlanKPI.EndTime; Method method = new Method(); method.StartTime = plst.PlanKPI.StartTime; method.EndTime = plst.PlanKPI.EndTime; planDetail.Methods = new List <Method>(); planDetail.Methods.Add(method); session.Save(planDetail); foreach (Attachment item in vbg.Document.Attach) { FileAttachment fa = new FileAttachment(); fa.Id = planDetail.Id; fa.Name = item.Name; fa.Extension = System.IO.Path.GetExtension(item.Name); string PathFileResource = filePath + "/" + fa.Id.ToString() + fa.Extension; File.WriteAllBytes(PathFileResource, item.Value); if (!System.IO.File.Exists(PathFileResource)) { System.IO.File.WriteAllBytes(PathFileResource, item.Value); } fa.Path = virtualFilePath + "/" + fa.Id.ToString() + fa.Extension; fa.PlanKPIDetail = new PlanKPIDetail() { Id = planDetail.Id }; fa.CreationTime = DateTime.Now; session.Save(fa); } } } else { //Không đọc dc xml result = -1; } }); } catch { result = -2; // lỗi khác } return(result); }
public IEnumerable <StaffDTO> GetDepartmentStaff(int agentObjectTypeId, Guid planId) { List <StaffDTO> result = new List <StaffDTO>(); SessionManager.DoWork(session => { Staff staff = ControllerHelpers.GetCurrentStaff(session); Guid staffId = staff.Id; switch (agentObjectTypeId) { case (int)AgentObjectTypes.PhongBan: { List <Staff> stafflist = session.Query <Staff>().Where(s => s.Department.Id == staff.Department.Id && s.StaffStatus.NoLongerWork == 0 && s.StaffProfile.GCRecord == null && s.StaffInfo.Position == null).ToList(); foreach (Staff s in stafflist) { if (s.Id != staffId) { StaffDTO sd = new StaffDTO(); sd.Name = s.StaffProfile.Name; sd.Id = s.Id; sd.AgentObjectIds = new List <Guid>(); //if (staff.StaffInfo.Position == null) //{ AgentObject ao = session.Query <AgentObject>().SingleOrDefault(a => a.AgentObjectType.Id == 2); sd.AgentObjectIds.Add(ao.Id); //} //else //{ // foreach (AgentObject a in s.StaffInfo.AgentObjects) // { // if (a.AgentObjectType.Id == 2) // { // sd.AgentObjectIds.Add(a.Id); // } // } //} if (sd.AgentObjectIds.Count > 0) { sd.AgentObjectId = sd.AgentObjectIds.FirstOrDefault(); } sd.IsApproved = false; sd.IsStaffRated = false; sd.IsSupervisorRated = false; PlanStaff planStaff = session.Query <PlanStaff>().Where(p => p.PlanKPI.Id == planId && p.Staff.Id == s.Id && p.Department == null).SingleOrDefault(); if (planStaff != null) { //Kế hoạch được trưởng phòng duyệt sd.IsApproved = planStaff.IsLocked; Result rs = session.Query <Result>().Where(r => r.PlanStaff.Id == planStaff.Id).SingleOrDefault(); if (rs != null) { //Trưởng phòng đánh giá sd.IsSupervisorRated = rs.TotalRecord > 0? true : false; //Nhân viên đã đánh giá sd.IsStaffRated = rs.TempRecord > 0 || sd.IsSupervisorRated == true ? true : false; } } result.Add(sd); } } } break; //User có cả 3 kế hoạch năm hk tháng case 100: { List <Staff> stafflist = session.Query <Staff>().Where(s => s.Department.Id == staff.Department.Id && s.StaffStatus.NoLongerWork == 0 && s.StaffProfile.GCRecord == null && s.StaffProfile.GCRecord == null).ToList(); foreach (Staff s in stafflist) { if (s.Id != staffId) { StaffDTO sd = new StaffDTO(); sd.Name = s.StaffProfile.Name; sd.Id = s.Id; sd.AgentObjectIds = new List <Guid>(); foreach (AgentObject a in s.StaffInfo.AgentObjects) { if (a.AgentObjectType.Id == 2) { sd.AgentObjectIds.Add(a.Id); } } if (sd.AgentObjectIds.Count > 0) { sd.AgentObjectId = sd.AgentObjectIds.FirstOrDefault(); } sd.IsApproved = false; sd.IsStaffRated = false; sd.IsSupervisorRated = false; PlanStaff planStaff = session.Query <PlanStaff>().Where(p => p.PlanKPI.Id == planId && p.Staff.Id == s.Id && p.Department == null).SingleOrDefault(); if (planStaff != null) { //Kế hoạch được trưởng phòng duyệt sd.IsApproved = planStaff.IsLocked; Result rs = session.Query <Result>().Where(r => r.PlanStaff.Id == planStaff.Id).SingleOrDefault(); if (rs != null) { //Trưởng phòng đánh giá sd.IsSupervisorRated = rs.TotalRecord > 0 && rs.IsLocked == true ? true : false; //Nhân viên đã đánh giá sd.IsStaffRated = (rs.TotalRecord > 0 && rs.IsLocked == false) || sd.IsSupervisorRated == true ? true : false; } } result.Add(sd); } } } break; case (int)AgentObjectTypes.BoMon: { List <Staff> stafflist = session.Query <Staff>().Where(s => s.StaffInfo.Subject.Id == staff.StaffInfo.Subject.Id && s.StaffStatus.NoLongerWork == 0 && s.StaffProfile.GCRecord == null && s.StaffProfile.GCRecord == null).ToList(); foreach (Staff s in stafflist) { if (s.Id != staffId) { StaffDTO sd = new StaffDTO(); sd.Name = s.StaffProfile.Name; sd.Id = s.Id; sd.AgentObjectIds = new List <Guid>(); foreach (AgentObject a in s.StaffInfo.AgentObjects) { if (a.AgentObjectType.Id == 1) { sd.AgentObjectIds.Add(a.Id); } } if (sd.AgentObjectIds.Count > 0) { sd.AgentObjectId = sd.AgentObjectIds.FirstOrDefault(); } sd.IsApproved = false; sd.IsStaffRated = false; sd.IsSupervisorRated = false; PlanStaff planStaff = session.Query <PlanStaff>().Where(p => p.PlanKPI.Id == planId && p.Staff.Id == s.Id && p.Department == null).SingleOrDefault(); if (planStaff != null) { //Kế hoạch được trưởng bộ môn duyệt sd.IsApproved = planStaff.IsLocked; Result rs = session.Query <Result>().Where(r => r.PlanStaff.Id == planStaff.Id).SingleOrDefault(); if (rs != null) { //Trưởng bộ môn đánh giá sd.IsSupervisorRated = rs.TotalRecord > 0 && rs.IsLocked == true ? true : false; //Giảng viên đã đánh giá sd.IsStaffRated = (rs.TotalRecord > 0 && rs.IsLocked == false) || sd.IsSupervisorRated == true ? true : false; } } result.Add(sd); } } } break; case (int)AgentObjectTypes.Khoa: { List <Staff> stafflist = session.Query <Staff>().Where(s => s.Department.Id == staff.Department.Id && s.StaffStatus.NoLongerWork == 0 && s.StaffProfile.GCRecord == null && (s.StaffInfo.Position.AgentObjectType.Id == 8 || s.StaffInfo.SubPositions.Any(p => p.Position.AgentObjectType.Id == 8))).ToList(); foreach (Staff s in stafflist) { if (s.Id != staffId) { StaffDTO sd = new StaffDTO(); sd.Name = s.StaffProfile.Name; sd.Id = s.Id; AgentObject a = session.Query <AgentObject>().Where(ag => ag.AgentObjectType.Id == 8).FirstOrDefault(); sd.AgentObjectId = a != null ? a.Id : Guid.Empty; sd.IsApproved = false; sd.IsStaffRated = false; sd.IsSupervisorRated = false; PlanStaff planStaff = session.Query <PlanStaff>().Where(p => p.PlanKPI.Id == planId && p.Staff.Id == s.Id && p.Department == null).SingleOrDefault(); if (planStaff != null) { //Kế hoạch được trưởng khoa duyệt sd.IsApproved = planStaff.IsLocked; Result rs = session.Query <Result>().Where(r => r.PlanStaff.Id == planStaff.Id).SingleOrDefault(); if (rs != null) { //Trưởng khoa đánh giá sd.IsSupervisorRated = rs.TotalRecord > 0 && rs.IsLocked == true ? true : false; //Phó trưởng khoa đã đánh giá sd.IsStaffRated = (rs.TotalRecord > 0 && rs.IsLocked == false) || sd.IsSupervisorRated == true ? true : false; } } result.Add(sd); } } } break; } }); return(result); }
public IEnumerable <StaffDTO> GetViceDepartmentStaff(int typeId, Guid departmentId, Guid planId) { var result = new List <StaffDTO>(); SessionManager.DoWork(session => { if (departmentId == Guid.Empty) { departmentId = ControllerHelpers.GetCurrentStaff(session).Department.Id; } int selectedTypeId = 0; switch (typeId) { case (int)AgentObjectTypes.Khoa: { selectedTypeId = (int)AgentObjectTypes.PhoKhoa; } break; case (int)AgentObjectTypes.PhongBan: { selectedTypeId = (int)AgentObjectTypes.PhoPhongBan; } break; case (int)AgentObjectTypes.HieuTruong: { selectedTypeId = (int)AgentObjectTypes.PhoHieuTruong; } break; } IQueryable <Staff> resultQuery = session.Query <Staff>().Where(s => s.Department.Id == departmentId && s.StaffStatus.NoLongerWork == 0 && s.StaffProfile.GCRecord == null && (s.StaffInfo.Position.AgentObjectType.Id == selectedTypeId || s.StaffInfo.SubPositions.Any(p => p.Position.AgentObjectType.Id == selectedTypeId))); //IQueryable<Staff> resultQuery = null; //resultQuery = session.Query<Staff>().Where(a => a.StaffInfo.Position.AgentObjectType.ParentAgentObjectType.Id == typeId).AsQueryable(); if (departmentId != Guid.Empty) { List <Staff> listtemp = resultQuery.Where(s => s.Department.Id == departmentId).ToList(); foreach (Staff st in listtemp) { StaffDTO std = ParseFullStaff(st); result.Add(std); } foreach (StaffDTO s in result) { AgentObject a = session.Query <AgentObject>().Where(ag => ag.AgentObjectType.Id == selectedTypeId).FirstOrDefault(); s.AgentObjectId = a != null ? a.Id : Guid.Empty; } } else { List <Staff> listtemp = resultQuery.ToList(); foreach (Staff st in listtemp) { StaffDTO std = ParseFullStaff(st); result.Add(std); } } foreach (StaffDTO st in result) { st.IsApproved = false; st.IsStaffRated = false; st.IsSupervisorRated = false; PlanStaff planStaff = session.Query <PlanStaff>().Where(p => p.PlanKPI.Id == planId && p.Staff.Id == st.Id && p.AgentObjectType.Id == st.AgentObjectTypeId).SingleOrDefault(); if (planStaff != null) { //Kế hoạch được trưởng phòng duyệt st.IsApproved = planStaff.IsLocked; Result rs = session.Query <Result>().Where(r => r.PlanStaff.Id == planStaff.Id).SingleOrDefault(); if (rs != null) { //Trưởng phòng đánh giá st.IsSupervisorRated = rs.TotalRecord > 0 ? true : false; //Nhân viên đã đánh giá st.IsStaffRated = rs.TempRecord > 0 || st.IsSupervisorRated == true ? true : false; } } } }); return(result); }
public Dictionary <string, object> GetResultList(Guid planId, Guid agentObjectId) { Dictionary <string, object> resultDic = new Dictionary <string, object>(); ResultRecordDTO result = new ResultRecordDTO(); SessionManager.DoWork(session => { Staff staff = ControllerHelpers.GetCurrentStaff(session); PlanKPI plan = session.Query <PlanKPI>().Where(p => p.Id == planId).OrderByDescending(p => p.CreateTime).FirstOrDefault(); if (plan != null) { //Kết quả trưởng phòng ResultRecordDTO manageRecordResultList = new ResultRecordDTO(); List <Result> mangeResult = new List <Result>(); List <AgentObjectType> agentObjectTypes = new List <AgentObjectType>(); PlanStaff planStaff = new PlanStaff(); if (staff.StaffInfo.Position != null && staff.StaffInfo.Position.AgentObjectType != null) { agentObjectTypes.Add(staff.StaffInfo.Position.AgentObjectType); } //Chức vụ chính foreach (AgentObjectType at in agentObjectTypes) { int AgentObjectTypeId = at.Id; if (AgentObjectTypeId == 1 || AgentObjectTypeId == 2) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Staff.Id == staff.Id).FirstOrDefault(); } else if (AgentObjectTypeId == 3 || AgentObjectTypeId == 5) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.Department.Id).FirstOrDefault(); } else if (AgentObjectTypeId == 6) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.StaffInfo.Subject.Id).FirstOrDefault(); } else if (AgentObjectTypeId == 7 || AgentObjectTypeId == 8) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.Department.Id && ps.Staff.Id == staff.Id).FirstOrDefault(); } if (planStaff != null) { Result manageRatingResult = session.Query <Result>().SingleOrDefault(r => r.PlanStaff.Id == planStaff.Id); mangeResult.Add(manageRatingResult); if (manageRatingResult != null) { RecordSingleResultDTO newRecord = ParseResultRecord(manageRatingResult); newRecord.IsMainPosition = true; newRecord.PositionRate = Convert.ToDouble(ConfigurationManager.AppSettings["TiLeChucVuChinh"]); manageRecordResultList.Results.Add(newRecord); } } } //Chức vụ kiêm nhiệm foreach (SubPosition po in staff.StaffInfo.SubPositions) { int AgentObjectTypeId = po.Position.AgentObjectType.Id; if (AgentObjectTypeId == 1 || AgentObjectTypeId == 2) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Staff.Id == staff.Id).FirstOrDefault(); } else if (AgentObjectTypeId == 3 || AgentObjectTypeId == 5) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.Department.Id).FirstOrDefault(); } else if (AgentObjectTypeId == 6) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.StaffInfo.Subject.Id).FirstOrDefault(); } else if (AgentObjectTypeId == 7 || AgentObjectTypeId == 8) { planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.Department.Id && ps.Staff.Id == staff.Id).FirstOrDefault(); } if (planStaff != null) { Result manageRatingResult = session.Query <Result>().SingleOrDefault(r => r.PlanStaff.Id == planStaff.Id); mangeResult.Add(manageRatingResult); if (manageRatingResult != null) { RecordSingleResultDTO newRecord = ParseResultRecord(manageRatingResult); newRecord.IsMainPosition = false; newRecord.PositionRate = staff.StaffInfo.SubPositions.Count == 1 ? Convert.ToDouble(ConfigurationManager.AppSettings["TiLeChucVuKiemNhiem"]) : Convert.ToDouble(ConfigurationManager.AppSettings["TiLeChucVuChinh"]) / staff.StaffInfo.SubPositions.Count; manageRecordResultList.Results.Add(newRecord); } } } // Kết quản kpis giảng dạy ResultRecordDTO teachingResultList = new ResultRecordDTO(); planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Staff.Id == staff.Id && ps.AgentObjectType.Id == 1).FirstOrDefault(); if (planStaff != null) { Result teachingRatingResult = session.Query <Result>().SingleOrDefault(r => r.PlanStaff.Id == planStaff.Id); RecordSingleResultDTO rsgr = ParseResultRecord(teachingRatingResult); teachingResultList.Results.Add(ParseResultRecord(teachingRatingResult)); } //kết quả nhân viên văn phòng ResultRecordDTO staffResultList = new ResultRecordDTO(); planStaff = session.Query <PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Staff.Id == staff.Id && ps.AgentObjectType.Id == 2).FirstOrDefault(); if (planStaff != null) { Result staffRatingResult = session.Query <Result>().SingleOrDefault(r => r.PlanStaff.Id == planStaff.Id); staffResultList.Results.Add(ParseResultRecord(staffRatingResult)); } resultDic["manageRecordResultList"] = manageRecordResultList; resultDic["teachingResultList"] = teachingResultList; resultDic["staffResultList"] = staffResultList; ResultRecordDTO generalManageResultList = new ResultRecordDTO(); double finalResult = 0; foreach (RecordSingleResultDTO sr in manageRecordResultList.Results) { RecordSingleResultDTO newsr = new RecordSingleResultDTO(); newsr.Name = sr.Name; newsr.PositionRate = sr.PositionRate; newsr.Rate = sr.Rate; newsr.Rate2 = 100 - newsr.Rate; newsr.Record = sr.Record; newsr.Record2 = teachingResultList.Results.FirstOrDefault() != null? teachingResultList.Results.First().Record:0; newsr.TotalRecord = Math.Round((newsr.Record * newsr.Rate / 100) + (newsr.Record2 * newsr.Rate2 / 100), 2); finalResult += Math.Round(newsr.TotalRecord * newsr.PositionRate / 100, 2); generalManageResultList.Results.Add(newsr); } generalManageResultList.FinalResult = finalResult; resultDic["generalManageResultList"] = generalManageResultList; //List<Result> ratingResults = new List<Result>(); ////Lấy danh sách các chức vụ, giảng dạy //List<AgentObjectType> agentObjectTypes = new List<AgentObjectType>(); //if(staff.StaffInfo.Position.AgentObjectType!=null) // agentObjectTypes.Add(staff.StaffInfo.Position.AgentObjectType); //List<KPI_WebUser> webUsers = session.Query<KPI_WebUser>().Where(u => u.StaffInfo.Id == staff.Id).ToList(); //AgentObject ao = session.Query<AgentObject>().Where(a => a.Id == agentObjectId).SingleOrDefault(); //List<AgentObject> otherAgentObjects = staff.StaffInfo.AgentObjects.Where(a => !agentObjectTypes.Any(at => at.Id == a.AgentObjectType.Id)).ToList(); //foreach (AgentObject ag in otherAgentObjects) //{ // agentObjectTypes.Add(ag.AgentObjectType); //} //if (staff.StaffInfo.AgentObjects.Count > 1) //{ // AgentObject agentObj = session.Query<AgentObject>().Where(a => a.Id == agentObjectId).SingleOrDefault(); //} //foreach(AgentObjectType at in agentObjectTypes) //{ // int AgentObjectTypeId = at.Id; // PlanStaff planStaff = new PlanStaff(); // if (AgentObjectTypeId == 1 || AgentObjectTypeId == 2) // planStaff = session.Query<PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Staff.Id == staff.Id).FirstOrDefault(); // else if (AgentObjectTypeId == 3 || AgentObjectTypeId == 5) // planStaff = session.Query<PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.Department.Id).FirstOrDefault(); // else if (AgentObjectTypeId == 6) // planStaff = session.Query<PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.StaffInfo.Subject.Id).FirstOrDefault(); // else if (AgentObjectTypeId == 7) // planStaff = session.Query<PlanStaff>().Where(ps => ps.PlanKPI.Id == planId && ps.Department.Id == staff.Department.Id && ps.Staff.Id == staff.Id).FirstOrDefault(); // Result ratingResult =new Result(); // if (planStaff != null) // { // ratingResult = session.Query<Result>().SingleOrDefault(r => r.PlanStaff.Id == planStaff.Id); // } // ratingResults.Add(ratingResult); //} //RecordSingleResultDTO newRecord = ParseResultRecord(ratingResults[0], ratingResults[1]); //result.Results.Add(newRecord); } }); return(resultDic); }