Мое текущее представление ввода также работает только в том случае, если на каждый вход имеется только один ввод. человек в день.
Просмотр создания группы:
Код: Выделить всё
@using QLAnCaWeb.ViewModels
@model CreateGroupViewModel
@{
Model.DayGroup = new DayGroup();
}
ĐĂNG KÝ ĂN CA CHO TẬP THỂ
HỌ TÊN: @Model.AppUser.Name
PHÒNG BAN: @Model.Department.DepartmentName
NGÀY ĐĂNG KÝ:
@for (int i = 0; i < Model.Department.Persons.Count; i++)
{
for (int j = 0; j < Model.Department.Persons[i].GroupPerDay.Count; j++)
{
}
}
Submit
Cancel
Код: Выделить всё
public async Task Create()
{
var userId = _contextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
var appUser = await _appUserRepository.GetByIdAsync(userId);
var department = await _departmentRepository.GetByUser(appUser);
department.Persons = _departmentRepository.PersonsInDep(department.DepartmentId);
foreach (var p in department.Persons)
{
p.GroupPerDay = await _departmentRepository.GetByPerson(p);
}
var createGroupViewModel = new CreateGroupViewModel()
{
AppUserId = userId,
AppUser = appUser,
Department = department,
};
return View(createGroupViewModel);
}
[Authorize(Roles = UserRoles.Admin + "," + UserRoles.User)]
[Authorize(Roles = UserRoles.Group)]
[HttpPost]
public async Task Create(CreateGroupViewModel model)
{
model.AppUserId = _contextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
model.AppUser = await _appUserRepository.GetByIdAsync(model.AppUserId);
var group = new Group()
{
GroupId = Guid.NewGuid().ToString(),
AppUser = model.AppUser,
Department = model.Department,
DayGroups = new List(),
};
var dayGroup = new DayGroup()
{
Id = Guid.NewGuid().ToString(),
SubcriptionDate = model.DayGroup.SubcriptionDate,
Group = group,
PersonInGroups = new List
(),
};
group.DayGroups.Add(dayGroup);
var daydep = new DayDepartment()
{
Id = Guid.NewGuid().ToString(),
Department = model.Department,
DepartmentId = model.Department.DepartmentId,
};
var month = await _monthRepository.GetByNumAndYearAsync(dayGroup.SubcriptionDate.Month, dayGroup.SubcriptionDate.Year);
if (month == null)
{
month = new Month()
{
MonthId = Guid.NewGuid().ToString(),
MonthNum = model.DayGroup.SubcriptionDate.Month,
MonthYear = model.DayGroup.SubcriptionDate.Year,
Days = new List(),
Departments = new List()
};
var day = new Day()
{
DayId = Guid.NewGuid().ToString(),
Date = model.DayGroup.SubcriptionDate,
Departments = new List(),
DayGroups = new List(),
DayDepartments = new List(),
Month = month,
};
_groupRepository.Save();
day.Departments.Add(model.Department);
dayGroup.Group = group;
day.DayGroups.Add(dayGroup);
daydep.Day = day;
daydep.DayId = day.DayId;
day.DayDepartments.Add(daydep);
var dep = await _departmentRepository.GetByIdAsync(model.Department.DepartmentId);
dep.DayDepartments.Add(daydep);
dep.Days.Add(day);
month.Days.Add(day);
month.Departments.Add(dep);
_dayRepository.Add(day);
_dayRepository.AddDayDep(daydep);
_monthRepository.Add(month);
}
else
{
month.Days = await _dayRepository.GetDaysByMonth(month);
int i = month.Days.Count();
bool b = true;
while (b)
{
if (i > 0)
{
for (int k = 0; k < i; k++)
{
if (month.Days[k].Date == model.DayGroup.SubcriptionDate)
{
if (month.Days[k].DayGroups == null)
{
month.Days[k].DayGroups = new List();
_dayRepository.Save();
}
month.Days[k].DayGroups.Add(dayGroup);
_dayRepository.Update(month.Days[k]);
daydep.Day = month.Days[k];
daydep.DayId = month.Days[k].DayId;
break;
}
else i--;
}
continue;
}
else
{
var day = new Day()
{
DayId = Guid.NewGuid().ToString(),
Date = model.DayGroup.SubcriptionDate,
Departments = new List(),
DayGroups = new List()
};
_groupRepository.Save();
day.Departments.Add(model.Department);
day.DayGroups.Add(dayGroup);
daydep.Day = day;
daydep.DayId = day.DayId;
daydep.Department = model.Department;
daydep.DepartmentId = model.Department.DepartmentId;
month.Days.Add(day);
month.Departments.Add(model.Department);
b = false;
continue;
}
}
_departmentRepository.Update(model.Department);
}
var groups = await _groupRepository.GetAll();
int l = groups.Count();
bool a = true;
while (a)
{
if (l > 0)
{
foreach (var g in groups)
{
if (g.GroupId == group.GroupId)
{
g.DayGroups = group.DayGroups;
g.Department = model.Department;
g.AppUser = model.AppUser;
_groupRepository.Update(g);
break;
}
else l--;
}
continue;
}
else
{
_groupRepository.Add(group);
a = false;
continue;
}
}
return RedirectToAction("Index", "Home");
}
Код: Выделить всё
public class DayGroup
{
public string Id { get; set; }
public DateTime SubcriptionDate { get; set; }
public Group Group { get; set; }
public List
PersonInGroups { get; set; }
}
public class Group
{
[Key]
public string GroupId { get; set; }
[Required]
public AppUser AppUser { get; set; }
public Department Department { get; set; }
[Required]
public List DayGroups { get; set; }
}
public class PersonInGroupPerDay
{
public string Id { get; set; }
public DayGroup DayGroup { get; set; }
public Person Person { get; set; }
[DefaultValue(0)]
public int Set1 { get; set; }
[DefaultValue(0)]
public int Set2 { get; set; }
[DefaultValue(0)]
public int Set3 { get; set; }
public List Groups { get; set; }
}
public class Person
{
[Key]
public string PersonId { get; set; }
public string Name { get; set; }
public string DepartmentId { get; set; }
public Department Department { get; set; }
public List GroupPerDay { get; set; }
}
public class CreateGroupViewModel
{
public string AppUserId { get; set; }
public AppUser AppUser { get; set; }
public Department Department { get; set; }
public DayGroup DayGroup { get; set; }
}
public class Department
{
[Key]
public string DepartmentId { get; set; }
public string DepartmentName { get; set; }
public List Persons { get; set; }
public List Users { get; set; }
public Group Group { get; set; }
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... ce-but-inc