Заполнение отношений «многие к одному» и как отображать вводимые данные только один раз, но увеличивать их, если даты воC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Заполнение отношений «многие к одному» и как отображать вводимые данные только один раз, но увеличивать их, если даты во

Сообщение Anonymous »

В настоящее время я работаю над веб-проектом, который требует от пользователя вводить группу значений для каждого человека в отделе за день, а затем отображать ее в двух других индексах для дня и месяца. У меня возникли проблемы с сохранением данных, их распространением и вводом указанных данных в базу данных SQL Server, а затем их отображением.
Мое текущее представление ввода также работает только в том случае, если на каждый вход имеется только один ввод. человек в день.
Просмотр создания группы:

Код: Выделить всё

@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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»