public void HoursDuration_EmptyWorkWeekSchouldReturn0() { WorkMonth wm = new WorkMonth(2011, 1, null, new WorkDayParserSettings(), 1); WorkWeek ww = new WorkWeek(wm, 1); Assert.AreEqual(0, ww.HoursDuration); }
private void CreateMissingWorkMonths(List <WorkDay> workDays, List <WorkMonth> existingMonths, AppUser user) { foreach (WorkDay day in workDays) { WorkMonth matchingMonth = existingMonths.FirstOrDefault(x => x.Month == day.Date.Month && x.Year == day.Date.Year); if (matchingMonth == null) { WorkMonth month = new() { ContractId = day.ContractId, Year = day.Date.Year, Month = day.Date.Month, }; _context.WorkMonths.Add(month); existingMonths.Add(month); day.WorkMonth = month; } else { day.WorkMonth = matchingMonth; } } }
public async Task <WorkMonth> AddWorkMonth(WorkMonth workMonth) { using (var context = new TimeKeeperDbContext(_options)) { var result = context.Add(workMonth); await context.SaveChangesAsync(); return(result.Entity); } }
private void ListerPaiements() { //-- var result = from a in dataSet1.AGENTS join p in dataSet2.PAIEMENTS on a.AGENT_ID equals p.AGENT_ID where (p.DATE_PAIEMENT.ToString("MMM yyyy").Equals(WorkMonth.ToString("MMM yyyy"))) group p by new { t1 = a.AGENT_ID, t2 = a.NOM, t3 = a.PRENOM } into g select new Pmts { Num_agent = g.Key.t1, Nom = g.Key.t2, Prenom = g.Key.t3, Montant = g.Sum(p => p.MONTANT_PAIEMENT), NumCheque = "En attente" }; dgvPaiements.DataSource = result.ToList(); }
public void HoursDuration_OnAMonth_ShouldSumCorrect() { WorkMonth wm = new WorkMonth(2011, 1, null, new WorkDayParserSettings(), 1); WorkDay wd = wm.Days.First(); wd.AddWorkItem(new WorkItem(new TimeItem(10), new TimeItem(11))); Assert.AreEqual(1, wd.HoursDuration); wd.AddWorkItem(new WorkItem(new TimeItem(11), new TimeItem(12))); Assert.AreEqual(2, wd.HoursDuration); wd.AddWorkItem(new WorkItem(new TimeItem(12), new TimeItem(12, 15))); Assert.AreEqual(2.25, wd.HoursDuration); wd.AddWorkItem(new WorkItem(new TimeItem(12, 15), new TimeItem(13))); Assert.AreEqual(3, wd.HoursDuration); Assert.AreEqual(3, wm.HoursDuration); }
public async Task <ActionResult <List <Dto.UserForGetHR> > > GetConsultants() { if (User.FindFirst(ClaimTypes.Role).Value == Config.GetSection("Role:Consultant:name").Value) { return(Unauthorized()); } /* * var users = Task.Run(()=> Repo.GetAllConsultant()); * var workMonths = Task.Run(() => Repo.GetAllWorkMonths()); * await Task.WhenAll(users, workMonths); */ var users = await Repo.GetAllConsultant(); var workMonths = await Repo.GetAllWorkMonths(); List <Dto.UserForGetHR> userDto = new List <Dto.UserForGetHR>(); if (users == null) { return(BadRequest()); } foreach (Models.User user in users) { Dto.UserForGetHR userForGetHR = new UserForGetHR { Id = user.Id, Email = user.Email, Name = user.Name, ChangeHistory = user.ChangeHistory }; //Mapper.Map<Dto.UserForGetHR>(user); try { Models.WorkMonth workMonthModel = workMonths.Where(x => x.UserId == user.Id).SingleOrDefault(); Dto.WorkMonth workMonth = new WorkMonth { Id = workMonthModel.Id, Month = workMonthModel.Month, Accepted = workMonthModel.Accepted, UserId = workMonthModel.UserId }; //Mapper.Map<Dto.WorkMonth>(workMonths.Result.Where(x => x.UserId == user.Id)); workMonth.Salary = Repo.GetSalary(user); workMonth.TotalHours = Repo.GetTotalTime(user); userForGetHR.WorkMonth = workMonth; } catch (Exception e) { return(BadRequest()); } userDto.Add(userForGetHR); } return(Ok(userDto)); }
public async Task <WorkMonth> GetLastActiveWorkMonthAsync(string userId, int organisationId) { List <WorkMonth> workMonths; using (var _context = new TimeKeeperDbContext(_options)) { workMonths = await _context.WorkMonths.Where(x => x.Organisation.Id == organisationId && x.UserId == userId && x.IsApproved == false).Include(x => x.Organisation).Include(x => x.Deviations).ThenInclude(x => x.DeviationType).ToListAsync(); } if (workMonths.Count < 1) { return(null); } WorkMonth result = workMonths.OrderBy(x => x.Id).Last(); return(result); }
private void AdminView_Load(object sender, EventArgs e) { this.dataSet1.EnforceConstraints = false; this.dataSet2.EnforceConstraints = false; // this.aGENTSTableAdapter1.Fill(this.dataSet2.AGENTS); this.pAIEMENTSTableAdapter.Fill(this.dataSet2.PAIEMENTS); this.aGENTSTableAdapter.Fill(this.dataSet1.AGENTS); this.tYPE_POLICESTableAdapter.Fill(this.dataSet1.TYPE_POLICES); // initialisation du paneau paiements InitialiserAffichage(); ListerPaiements(); // fermeture du splash Program.SplashRef.Visible = false; lblMois.Text = WorkMonth.ToString("MMM yyyy"); }
private void btnConfirmer_Click(object sender, EventArgs e) { // récupération des numéro de cheque à partir du DataGridView List <object> listePaiements = new List <object>(); foreach (DataGridViewRow item in dgvPaiements.Rows) { listePaiements.Add(new { Num_agent = item.Cells["Num_agent"].Value, NumCheque = item.Cells["NumCheque"].Value }); } // enregistrement des numéro de cheque dans la table paiements decimal numAgent; string numCheque; foreach (DataGridViewRow item in dgvPaiements.Rows) { numAgent = (decimal)item.Cells["Num_agent"].Value; numCheque = (string)item.Cells["NumCheque"].Value; foreach (DataSet2.PAIEMENTSRow row in dataSet2.PAIEMENTS.Rows) { if ((row.DATE_PAIEMENT.ToString("MMM yyyy").Equals(WorkMonth.ToString("MMM yyyy"))) && (row.AGENT_ID == numAgent)) { row.NUM_CHEQUE = numCheque; } } } dgvPaiements.DataSource = dataSet2.PAIEMENTS; // persister les changements this.pAIEMENTSTableAdapter.Update(dataSet2.PAIEMENTS); MessageBox.Show("Changements enregistrés"); }
public void ShortCutStatistic_OnAMonth_ShouldSumCorrect() { var abbr = new List <ShortCut>(); abbr.Add(new ShortCut("ctb", "11111-111")); WorkDayParserSettings workDayParserSettings = new WorkDayParserSettings { ShortCuts = abbr, InsertDayBreak = false }; WorkDayParser wdp = new WorkDayParser(workDayParserSettings); WorkDayParser.Instance = wdp; WorkMonth wm = new WorkMonth(2011, 1, null, workDayParserSettings, 1); WorkDay wd = wm.Days.First(); wd.OriginalString = "8,8;ctb"; wm.CalcShortCutStatistic(); var scs = wm.ShortCutStatistic.FirstOrDefault(s => s.Key == "ctb"); Assert.NotNull(scs); Assert.AreEqual(8, scs.UsedInMonth); }