public void ShouldReturnEndDate() { var options = new DbContextOptionsBuilder <YogaAshramContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options; var context = new YogaAshramContext(options); Seed(context); var query = new ClientServices(context); var result = query.EndDateForClientsMembership(_date, 1, 4); _testOutputHelper.WriteLine(result.ToString("d")); Assert.Equal(new DateTime(2020, 11, 5), result.Date); }
public async Task <IActionResult> ExtendAjax(MembershipExtendModelView model) { Client client = await _db.Clients.FirstOrDefaultAsync(p => p.Id == model.ClientId); Membership membership = await _db.Memberships.FirstOrDefaultAsync(p => p.Id == model.MembershipId); if (-client.Balance > model.CashSum + model.CardSum) { return(Content("errorNotEnoughSum")); } foreach (var attendanceUnActive in _db.Attendances.Where(a => a.ClientId == model.ClientId)) { attendanceUnActive.IsNotActive = true; } int daysFrozen = 0; if (membership.AttendanceDays == 12) { daysFrozen = 3; } else if (membership.AttendanceDays == 8) { daysFrozen = 2; } else { daysFrozen = 0; } List <DateTime> datesOfAttendance = _clientServices.DatesForAttendance( model.Date, model.GroupId, membership.AttendanceDays); AttendanceCount attendanceCount = new AttendanceCount() { AttendingTimes = membership.AttendanceDays, AbsenceTimes = 0, FrozenTimes = daysFrozen }; _db.Entry(attendanceCount).State = EntityState.Added; client.MembershipId = membership.Id; client.GroupId = model.GroupId; client.Membership = membership; client.LessonNumbers = membership.AttendanceDays; client.HasMembership = true; _db.Entry(client).State = EntityState.Modified; DateTime endDate = _clientServices.EndDateForClientsMembership( model.Date, model.GroupId, membership.AttendanceDays); ClientsMembership clientsMembership = new ClientsMembership() { ClientId = client.Id, MembershipId = membership.Id, DateOfPurchase = DateTime.Now, DateOfExpiry = endDate, FirstDateOfLesson = model.Date }; _db.Entry(clientsMembership).State = EntityState.Added; foreach (var date in datesOfAttendance) { Attendance attendance = new Attendance() { ClientId = client.Id, MembershipId = membership.Id, Date = date, AttendanceState = AttendanceState.notcheked, GroupId = model.GroupId, AttendanceCount = attendanceCount, ClientsMembership = clientsMembership }; _db.Entry(attendance).State = EntityState.Added; } Employee employee = await _userManager.GetUserAsync(User); await _db.SaveChangesAsync(); model.BranchId = client.Group.BranchId; bool check = await _paymentsService.PayForMembership(model, clientsMembership, client, employee.Id); if (!check) { return(Content("error")); } return(Content("success")); }