public bool IsModified() { bool result = false; if (_listUserTableRecords == null) { _listUserTableRecords = new List <clTableRecord>(); } if (_listUserTableRecords_Original == null) { _listUserTableRecords_Original = new List <clTableRecord>(); } //Ищем новые табельные записи foreach (var item in _listUserTableRecords) { clTableRecord tr = _listUserTableRecords_Original.Find(x => (x.SetGuid.Equals(item.SetGuid)) && (x.StageGuid.Equals(item.StageGuid)) && (x.ExecutorId.Equals(item.ExecutorId)) && (x.WorkDate.ToShortDateString().Equals(item.WorkDate.ToShortDateString())) ); if (tr == null) { //Новая табельная запись, ее нет в исходном списке result = true; return(result); } else { //Проверить была ли изменена табельная запись if ((tr.WorkFact != item.WorkFact)) { result = true; return(result); } } } //Ищем удаленные табельные записи foreach (var item in _listUserTableRecords_Original) { clTableRecord tr = _listUserTableRecords.Find(x => (x.SetGuid.Equals(item.SetGuid)) && (x.StageGuid.Equals(item.StageGuid)) && (x.ExecutorId.Equals(item.ExecutorId)) && (x.WorkDate.ToShortDateString().Equals(item.WorkDate.ToShortDateString())) ); if (tr == null) { //Табельная запись есть в исходном но отсутствует в модифицированном - была удалена result = true; return(result); } } return(result); }
private void CreateTableRecord(string set_guid, string stage_guid, DateTime work_date, double work_fact) { clSet set = _listUserSets.Find(x => (x.SetGuid.Equals(set_guid)) && (x.StageGuid.Equals(stage_guid))); if (set == null) { return; } double day_max_fact = 15; double day_actualy_fact = 0; List <clTableRecord> _templist = _listUserTableRecords.FindAll(x => (x.WorkDate.ToShortDateString().Equals(work_date.ToShortDateString()))); if ((_templist != null) && (_templist.Count > 0)) { day_actualy_fact = _templist.Sum(x => x.WorkFact); if (work_fact > day_max_fact - day_actualy_fact) { work_fact = day_max_fact - day_actualy_fact; } if (work_fact <= 0) { MessageBox.Show("Количество отработанных часов в сутки должно быть меньше 15", "Превышен лимит", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } clTableRecord tr = new clTableRecord(); tr.CreateDate = DateTime.Now; tr.CreateUserId = this.UserId; tr.DeptId = this.DepartmentId; tr.ExecutorId = SelectedUserID; tr.ManuallyInput = 1; tr.ModifyDate = DateTime.Now; tr.ModifyUserId = this.SelectedUserID; tr.SetGuid = set.SetGuid; tr.StageGuid = set.StageGuid; tr.WorkDate = work_date; tr.WorkFact = work_fact; tr.WorkPlan = 0; _listUserTableRecords.Add(tr); }
public clTableRecord GetTableRecord(string set_guid, DateTime work_date) { clTableRecord result = null; if ((_listUserTableRecords != null) && (_listUserTableRecords.Count > 0)) { var tr = _listUserTableRecords.Find(x => (x.SetGuid.Equals(set_guid)) && (x.WorkDate.ToShortDateString().Equals(work_date.ToShortDateString())) ); if (tr != null) { result = tr; } } return(result); }
public void FindChanges(ref List <clTableRecord> _original, ref List <clTableRecord> _modified, ref List <clTableRecord> _new, ref List <clTableRecord> _updated, ref List <clTableRecord> _deleted) { //Ищем новые табельные записи foreach (var item in _modified) { clTableRecord tr = _original.Find(x => (x.SetGuid.Equals(item.SetGuid)) && (x.StageGuid.Equals(item.StageGuid)) && (x.ExecutorId.Equals(item.ExecutorId)) && (x.WorkDate.ToShortDateString().Equals(item.WorkDate.ToShortDateString())) ); if (tr == null) { //Новая табельная запись, ее нет в исходном списке _new.Add(item); } else { //Проверить была ли изменена табельная запись if ((tr.WorkFact != item.WorkFact)) { _updated.Add(item); } } } //Ищем удаленные табельные записи foreach (var item in _original) { clTableRecord tr = _modified.Find(x => (x.SetGuid.Equals(item.SetGuid)) && (x.StageGuid.Equals(item.StageGuid)) && (x.ExecutorId.Equals(item.ExecutorId)) && (x.WorkDate.ToShortDateString().Equals(item.WorkDate.ToShortDateString())) ); if (tr == null) { //Табельная запись есть в исходном но отсутствует в модифицированном - была удалена _deleted.Add(item); } } }
public void CreateOrUpdateTableRecord(string set_guid, string stage_guid, DateTime work_date, double work_fact) { if ((_listUserTableRecords == null)) { _listUserTableRecords = new List <clTableRecord>(); } clTableRecord tr = _listUserTableRecords.Find(x => (x.SetGuid.Equals(set_guid)) && (x.StageGuid.Equals(stage_guid)) && (x.WorkDate.ToShortDateString().Equals(work_date.ToShortDateString())) ); if (tr == null) { //Создать новую табельную запись CreateTableRecord(set_guid, stage_guid, work_date, work_fact); } else { //Обновить табельную запись UpdateTableRecord(set_guid, stage_guid, work_date, work_fact); } }
public void LoadIndividualPlan(DateTime PlanDate) { DateTime from = new DateTime(PlanDate.Year, PlanDate.Month, 1, 0, 0, 0); DateTime to = new DateTime(PlanDate.Year, PlanDate.Month, DateTime.DaysInMonth(PlanDate.Year, PlanDate.Month), 0, 0, 0); //skud.LoadData(from.ToShortDateString(), to.ToShortDateString()); if (_listUserTableRecords == null) { _listUserTableRecords = new List <clTableRecord>(); } else { _listUserTableRecords.Clear(); } if (_listUserSets == null) { _listUserSets = new List <clSet>(); } else { _listUserSets.Clear(); } SqlConnection connection = null; SqlDataReader dr = null; try { connection = new SqlConnection(this.ConnStringSprut); SqlCommand command = new SqlCommand("[dbo].[PL_GetUserPlan]", connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@user_id", SqlDbType.BigInt).Value = this._selected_user_id; command.Parameters.Add("@year", SqlDbType.Int).Value = PlanDate.Year; command.Parameters.Add("@month", SqlDbType.Int).Value = PlanDate.Month; connection.Open(); dr = command.ExecuteReader(); if (dr.HasRows) { while (dr.Read()) { DateTime dt; double val = 0; #region Считываем табельную запись clTableRecord tr = new clTableRecord(); tr.SetGuid = dr["set_guid"].ToString(); tr.StageGuid = dr["stage_guid"].ToString(); tr.ExecutorId = dr["executor_id"].ToString(); if (DateTime.TryParse(dr["work_date"].ToString(), out dt)) { tr.WorkDate = dt; } else { tr.WorkDate = DateTime.Now; } if (Double.TryParse(dr["work_plan"].ToString(), out val)) { tr.WorkPlan = val; } else { tr.WorkPlan = 0; } if (Double.TryParse(dr["work_fact"].ToString(), out val)) { tr.WorkFact = val; } else { tr.WorkFact = 0; } if (Double.TryParse(dr["manually_input"].ToString(), out val)) { tr.ManuallyInput = val; } else { tr.ManuallyInput = 0; } tr.DeptId = dr["dept_id"].ToString(); if (DateTime.TryParse(dr["modify_date"].ToString(), out dt)) { tr.ModifyDate = dt; } else { tr.ModifyDate = DateTime.Now; } tr.ModifyUserId = dr["modify_user_id"].ToString(); if (DateTime.TryParse(dr["create_date"].ToString(), out dt)) { tr.CreateDate = dt; } else { tr.CreateDate = DateTime.Now; } tr.CreateUserId = dr["create_user_id"].ToString(); _listUserTableRecords.Add(tr); #endregion #region Считываем комплект clSet set = new clSet(); set.Contract = dr["contract"].ToString(); set.SetCode = dr["set_code"].ToString(); set.SetName = dr["set_name"].ToString(); set.StageName = dr["stage_name"].ToString(); set.StageGuid = dr["stage_guid"].ToString(); //set.Kks = dr["set_kks"].ToString(); set.Building = dr["building"].ToString(); if (DateTime.TryParse(dr["gip_start"].ToString(), out dt)) { set.GipStart = dt; } else { set.GipStart = DateTime.Now; } if (DateTime.TryParse(dr["gip_end"].ToString(), out dt)) { set.GipEnd = dt; } else { set.GipEnd = DateTime.Now; } set.SetGuid = dr["set_guid"].ToString(); var temp = _listUserSets.Find(x => (x.SetGuid.Equals(set.SetGuid))); if (temp == null) { _listUserSets.Add(set); } #endregion } } if (_listUserTableRecords_Original == null) { _listUserTableRecords_Original = new List <clTableRecord>(); } else { _listUserTableRecords_Original.Clear(); } foreach (var item in _listUserTableRecords) { clTableRecord tr = new clTableRecord(); tr.CreateDate = item.CreateDate; tr.CreateUserId = item.CreateUserId; tr.DeptId = item.DeptId; tr.ExecutorId = item.ExecutorId; tr.ManuallyInput = item.ManuallyInput; tr.ModifyDate = item.ModifyDate; tr.ModifyUserId = item.ModifyUserId; tr.SetGuid = item.SetGuid; tr.StageGuid = item.StageGuid; tr.WorkDate = item.WorkDate; tr.WorkFact = item.WorkFact; tr.WorkPlan = item.WorkPlan; _listUserTableRecords_Original.Add(tr); } } catch (Exception ex) { MessageBox.Show("Произошла ошибка при получении индивидуального плана сотрудника.\n" + ex.Message + "\n" + ex.StackTrace, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (dr != null) { dr.Close(); } if (connection != null) { connection.Close(); } } FillTableIndividualPlan(PlanDate); }