private async Task <ActionResponse <EducationProgramDto> > CheckForDelete(int id) { try { var subjectCheckQuery = unitOfWork.GetGenericRepository <Subject>() .ReadAllActiveAsQueryable() .Where(e => e.EducationProgramId == id); if (subjectCheckQuery.Any()) { return(await ActionResponse <EducationProgramDto> .ReturnWarning(null, "error.delete_linked_data")); } var planCheckQuery = unitOfWork.GetGenericRepository <Plan>() .ReadAllActiveAsQueryable() .Where(e => e.EducationProgramId == id); if (planCheckQuery.Any()) { return(await ActionResponse <EducationProgramDto> .ReturnWarning(null, "error.delete_linked_data")); } var sgCheckQuery = unitOfWork.GetGenericRepository <StudentGroup>() .ReadAllActiveAsQueryable() .Where(e => e.ProgramId == id); if (sgCheckQuery.Any()) { return(await ActionResponse <EducationProgramDto> .ReturnWarning(null, "error.delete_linked_data")); } var sreCheckQuery = unitOfWork.GetGenericRepository <StudentRegisterEntry>() .ReadAllActiveAsQueryable() .Where(e => e.EducationProgramId == id); if (sreCheckQuery.Any()) { return(await ActionResponse <EducationProgramDto> .ReturnWarning(null, "error.delete_linked_data")); } return(await ActionResponse <EducationProgramDto> .ReturnSuccess(null, "Brisanje moguće.")); } catch (Exception) { return(await ActionResponse <EducationProgramDto> .ReturnError("Greška prilikom provjere za brisanja programa.")); } }
private async Task <ActionResponse <StudentDto> > CheckForDelete(int id) { try { var checkQuery = unitOfWork.GetGenericRepository <StudentClassAttendance>() .ReadAllActiveAsQueryable() .Where(e => e.StudentId == id); if (checkQuery.Any()) { return(await ActionResponse <StudentDto> .ReturnWarning(null, "error.delete_linked_data")); } return(await ActionResponse <StudentDto> .ReturnSuccess(null, "Brisanje moguće.")); } catch (Exception) { return(await ActionResponse <StudentDto> .ReturnError("Greška prilikom provjere za brisanja studenta.")); } }
public async Task <ActionResponse <List <StudentRegisterPrintDataAggregatedDto> > > GetPrintDataForBookAndEntriesRange(StudentRegisterPrintForRangeRequest request) { try { var studentRegisterEntryFailResponses = new List <ActionResponse <StudentRegisterEntryDto> >(); var educationProgramsFailResponses = new List <ActionResponse <StudentEducationProgramsPrintModel> >(); var printData = new List <StudentRegisterPrintDataAggregatedDto>(); var range = Enumerable.Range(request.StudentRegisterNumberRangeFrom, request.StudentRegisterNumberRangeTo - request.StudentRegisterNumberRangeFrom); await Task.WhenAll(range.Select(async number => { if ((await GetEntryForStudentNumberAndBookNumberAndBookYearDetailed(new StudentRegisterEntryInsertRequest { BookNumber = request.BookNumber, BookYear = request.BookYear, StudentRegisterNumber = number })).IsNotSuccess(out ActionResponse <StudentRegisterEntryDto> registerEntryResponse, out StudentRegisterEntryDto studentRegisterEntry)) { studentRegisterEntryFailResponses.Add(registerEntryResponse); } else if (studentRegisterEntry != null) { if ((await studentService.GetStudentsEducationPrograms(studentRegisterEntry.Student.Id)) .IsNotSuccess(out ActionResponse <StudentEducationProgramsPrintModel> studentEducationProgramsResponse, out StudentEducationProgramsPrintModel studentEducationPrograms)) { educationProgramsFailResponses.Add(studentEducationProgramsResponse); } else { printData.Add(new StudentRegisterPrintDataAggregatedDto { StudentRegisterEntry = studentRegisterEntry, StudentEducationPrograms = studentEducationPrograms }); } } })); var anyRegisterFails = studentRegisterEntryFailResponses.Any(); var anyEduProgramsFails = educationProgramsFailResponses.Any(); if (!anyRegisterFails && !anyEduProgramsFails) { return(await ActionResponse <List <StudentRegisterPrintDataAggregatedDto> > .ReturnSuccess(printData)); } else { if ((anyRegisterFails && studentRegisterEntryFailResponses.All(r => r.ActionResponseType != ActionResponseTypeEnum.Success)) || (anyEduProgramsFails && educationProgramsFailResponses.All(r => r.ActionResponseType != ActionResponseTypeEnum.Success))) { return(await ActionResponse <List <StudentRegisterPrintDataAggregatedDto> > .ReturnError("Greška prilikom dohvata podataka.", printData)); } return(await ActionResponse <List <StudentRegisterPrintDataAggregatedDto> > .ReturnWarning("Postoje greške prilikom dohvata zapisa matične knjige.", printData)); } } catch (Exception) { return(await ActionResponse <List <StudentRegisterPrintDataAggregatedDto> > .ReturnError("Greška prilikom dohvata zapisa.")); } }
public async Task <ActionResponse <StudentRegisterEntryInsertRequest> > PrepareForInsert(StudentRegisterEntryInsertRequest request) { try { var alreadyInserted = unitOfWork.GetGenericRepository <StudentRegisterEntry>() .ReadAllActiveAsQueryable() .Where(e => e.EducationProgramId == request.EducationProgramId) .Any(e => e.StudentsInGroups.StudentId == request.StudentId); if (alreadyInserted) { return(await ActionResponse <StudentRegisterEntryInsertRequest> .ReturnWarning("Ovaj student već je unuesen u matičnu knjigu za izabrani program. Molimo provjerite podatke.")); } ActionResponse <List <StudentRegisterDto> > registerResponse; if (!request.BookNumber.HasValue) { if ((await GetAllNotFull()).IsNotSuccess(out registerResponse, out List <StudentRegisterDto> notFullRegisters)) { return(await ActionResponse <StudentRegisterEntryInsertRequest> .ReturnError(registerResponse.Message)); } if (notFullRegisters.Any(sr => sr.BookYear == request.BookYear)) { var selectedBook = notFullRegisters.OrderByDescending(b => b.BookNumber).FirstOrDefault(); request.BookNumber = selectedBook.BookNumber; request.BookYear = selectedBook.BookYear; request.BookId = selectedBook.Id; } else { if ((await GetAll()).IsNotSuccess(out registerResponse, out List <StudentRegisterDto> registers)) { return(await ActionResponse <StudentRegisterEntryInsertRequest> .ReturnError("Greška prilikom dohvata postojećih matičnih knjiga.")); } var minBookNumber = registers.Min(r => r.BookNumber) ?? 0; var maxBookNumber = registers.Max(r => r.BookNumber) ?? 0; List <int> fullList = Enumerable.Range(minBookNumber, maxBookNumber - minBookNumber + 1).ToList(); List <int> realList = registers.Select(r => r.BookNumber.Value).ToList(); var missingNums = fullList.Except(realList).ToList(); var nextAvailableNumber = missingNums.Min() + 1; request.BookNumber = nextAvailableNumber; request.CreateNewBook = true; } } else { var chosenBook = unitOfWork.GetGenericRepository <StudentRegister>() .ReadAllActiveAsQueryable() .Where(b => b.BookNumber == request.BookNumber && b.BookYear == request.BookYear) .FirstOrDefault(); if (chosenBook == null) { request.CreateNewBook = true; } request.BookId = chosenBook?.Id; } if (!request.StudentRegisterNumber.HasValue) { var fullList = Enumerable.Range((request.BookNumber.Value * 200) - 199, 200).ToList(); if (request.CreateNewBook) { request.StudentRegisterNumber = fullList.Min(); } else { if ((await GetById(request.BookId.Value)) .IsNotSuccess(out ActionResponse <StudentRegisterDto> bookResponse, out StudentRegisterDto registerDto)) { return(await ActionResponse <StudentRegisterEntryInsertRequest> .ReturnError(bookResponse.Message)); } request.StudentRegisterNumber = registerDto.FreeStudentRegisterNumbers.Min(); } } return(await ActionResponse <StudentRegisterEntryInsertRequest> .ReturnSuccess(request)); } catch (Exception) { return(await ActionResponse <StudentRegisterEntryInsertRequest> .ReturnError("Greška prilikom pripreme za unos matične knjige.")); } }