Как разработать систему управления отпусками сотрудников
система управления отпусками сотрудников
работник может взять 2 отпуска в месяц.если он не берет отпуск, то отпуск будет перенесен на следующий месяц,но в общей сложности через 2 года эти переносные листья не могут быть использованы.как я могу рассчитать доступные отпуска каждый месяц?
public bool CheckLeaveStatus(int empid, DateTime date) { bool temp = false; int totalleave = 0; string qry = "select joining from profile where profileid=@id"; MySqlParameter idP = new MySqlParameter("@id", empid); DataRow dr = MySqlHelper.ExecuteDataRow(Common.GetConnectionString(), qry, idP); if (dr != null) { DateTime joiningdate = Convert.ToDateTime(dr["joining"]); int legaldate = joiningdate.Day; if (legaldate <= 15) { totalleave += 2; } else { totalleave += 0; } //TimeSpan t1 = date - joiningdate; int monthspassed = Common.MonthDifference(date, joiningdate); if (monthspassed > 3)//then he is allowd to take leave { int startmonth = joiningdate.Month + 1; int endmonth = date.Month; int monthdiffernce = endmonth - startmonth; /*here i am having problem how can i written logic for two years passed from joiningdate and after that every month again two leaves issued .in this previous leave is not taken care off and leave taken count from new logic because two years passed */ if (monthdiffernce > 24) { monthdiffernce = 24; } int leaves = (monthdiffernce) * 2; int allowedleaves = leaves + totalleave; int availablelaves = allowedleaves - LeaveTaken(empid); if (availablelaves > 0) { temp = true; } } //DateTime previousdate = date.AddYears(-2); } return temp; } public int LeaveTaken(int empid) { try { int taken = 0; string qry = "select count(*) from leavestatus where empid=@id"; MySqlParameter idP = new MySqlParameter("@id", empid); taken = Convert.ToInt32(MySqlHelper.ExecuteScalar(Common.GetConnectionString(), qry, idP)); return taken; } catch { return 0; } } public void AddLeaves(int empid, DateTime date, string status) { if (status == "L") { string qry = "insert into leavestatus(empid,takenon)values(@empid,@takenon)"; MySqlParameter idP = new MySqlParameter("@empid", empid); MySqlParameter takenonP = new MySqlParameter("@takenon", date); MySqlParameter[] p = { idP, takenonP }; MySqlHelper.ExecuteNonQuery(Common.GetConnectionString(), qry, p); } }
Что я уже пробовал:
как я могу это сделать? пожалуйста, скажите мне
Suvendu Shekhar Giri
Что вы пробовали до сих пор?
buffedcheesy
Было бы полезно рассказать нам, с какой системой вы работаете, используете ли вы sql server или локальную БД и т. д.
pankajgarg1986
я использую sql server с asp .net c#