public void AssignProject(int userId, int projectId, int studentId)
        {
            var isLecturer = AuthorizationHelper.IsLecturer(Context, userId);
            var isStudent  = AuthorizationHelper.IsStudent(Context, userId);

            studentId = isStudent ? userId : studentId;

            var assignment = Context.AssignedCourseProjects.FirstOrDefault(x => x.CourseProjectId == projectId);

            if (isLecturer && assignment != null && assignment.ApproveDate.HasValue ||
                isStudent && assignment != null)
            {
                throw new ApplicationException("The selected Diplom Project has already been assigned!");
            }

            var studentAssignments = Context.AssignedCourseProjects.Where(x => x.StudentId == studentId);

            if (isStudent && studentAssignments.Any(x => x.ApproveDate.HasValue))
            {
                throw new ApplicationException("You already have an assigned project!");
            }

            foreach (var studentAssignment in studentAssignments)
            {
                Context.AssignedCourseProjects.Remove(studentAssignment);
            }

            if (assignment == null)
            {
                assignment = new AssignedCourseProject
                {
                    CourseProjectId = projectId
                };
                Context.AssignedCourseProjects.Add(assignment);
            }

            assignment.StudentId   = studentId == 0 ? assignment.StudentId : studentId;
            assignment.ApproveDate = isLecturer ? (DateTime?)DateTime.Now : null;
            var cp = Context.CourseProjects.FirstOrDefault(x => x.CourseProjectId == projectId);

            cp.DateStart = isLecturer ? (DateTime?)DateTime.Now : null;
            Context.SaveChanges();

            if (cp.Subject.IsNeededCopyToBts)
            {
                CreateBtsProject(cp, studentId);
            }
        }
Beispiel #2
0
        public static string CourseProjectToDocView(AssignedCourseProject work)
        {
            var sb       = new StringBuilder();
            var cinfo    = CultureInfo.CreateSpecificCulture("ru-ru");
            var doc      = CourseProjectToXml(work, cinfo);
            var xslt     = new XslTransform();
            var url      = string.Format("{0}.Export.cptasklist.xslt", Assembly.GetExecutingAssembly().GetName().Name);
            var xsltFile = Assembly.GetExecutingAssembly().GetManifestResourceStream(url);

            xsltFile.Seek(0, SeekOrigin.Begin);
            using (var xmlr = XmlReader.Create(xsltFile))
            {
                xslt.Load(xmlr);
                using (TextWriter tw = new StringWriter(sb))
                {
                    var result = new XsltArgumentList();
                    xslt.Transform(doc, result, tw);
                }
            }

            return(sb.ToString());
        }
Beispiel #3
0
        private static XmlDocument CourseProjectToXml(AssignedCourseProject awork, CultureInfo cultureInfo)
        {
            var doc  = new XmlDocument();
            var root = doc.CreateElement("YearlyWorks");

            root.SetAttribute("DiplomProjectId", awork.CourseProject.CourseProjectId.ToString());
            root.SetAttribute("year", awork.ApproveDate.HasValue ? awork.ApproveDate.Value.ToString("yyyy'г.'", cultureInfo.DateTimeFormat) : string.Empty);

            var children = new List <XmlElement>();

            children.AddRange(CreateStringNodes(doc, "Theme", awork.CourseProject.Theme, 523, 638, 5));

            var student = doc.CreateElement("item");

            student.SetAttribute("name", "Student");
            student.InnerText = string.Format("{0} {1} {2}", awork.Student.LastName, awork.Student.FirstName, awork.Student.MiddleName);
            children.Add(student);

            var group = doc.CreateElement("item");

            group.SetAttribute("name", "Group");
            group.InnerText = awork.Student.Group.Name;
            children.Add(group);

            var specialty = doc.CreateElement("item");

            specialty.SetAttribute("name", "Specialty");

            //            specialty.InnerText = awork.Student.Group.Speciality.Specialty;  TODO
            children.Add(specialty);

            var specialtyShifr = doc.CreateElement("item");

            specialtyShifr.SetAttribute("name", "SpecialtyShifr");

            //            specialtyShifr.InnerText = awork.Student.Group.Speciality.SpecialtyShifr;
            children.Add(specialtyShifr);

            var specializationShifr = doc.CreateElement("item");

            specializationShifr.SetAttribute("name", "SpecializationShifr");

            //            specializationShifr.InnerText = awork.Student.Group.Speciality.SpecializationShifr;
            children.Add(specializationShifr);

            var specialization = doc.CreateElement("item");

            specialization.SetAttribute("name", "Specialization");

            //            specialization.InnerText = awork.Student.Group.Speciality.Specialization;
            children.Add(specialization);

            var univer = doc.CreateElement("item");

            univer.SetAttribute("name", "Univer");
            univer.InnerText = "Белорусский Национальный Технический университет";
            children.Add(univer);

            var faculty = doc.CreateElement("item");

            faculty.SetAttribute("name", "Faculty");
            faculty.InnerText = "Информационных технологий и робототехники";
            children.Add(faculty);

            children.AddRange(CreateStringNodes(doc, "InputData", awork.CourseProject.InputData, 439, 638, 13));

            children.AddRange(CreateStringNodes(doc, "RPZContent", awork.CourseProject.RpzContent, 331, 638, 15));

            children.AddRange(CreateStringNodes(doc, "DrawMaterials", awork.CourseProject.DrawMaterials, 403, 638, 5));

            children.AddRange(CreateStringNodes(doc, "Consultants", awork.CourseProject.Consultants, 271, 638, 6));

            var pd = doc.CreateElement("item");

            pd.SetAttribute("name", "PublishData");
            pd.InnerText = awork.ApproveDate.HasValue ? awork.ApproveDate.Value.ToString("d' 'MMMM' 'yyyy'г.'", cultureInfo.DateTimeFormat) : string.Empty;
            children.Add(pd);

            //SubjectGroup sg = work.Subject.Groups.GetByGroupId(work.Student.GroupId);
            var percentageGraph = new StringBuilder();

            /*var pgs = awork.Student.Group.Secretary != null ?
             *  awork.Student.Group.Secretary.CoursePercentagesGraphs : new List<CoursePercentagesGraph>();*/

            var pgs = awork.CourseProject.Subject.CoursePersentagesGraphs;
            var i   = 1;

            foreach (var pg in pgs)
            {
                percentageGraph.AppendFormat(CultureInfo.CreateSpecificCulture("ru-RU"), "{3}. {0} \t{1}% \t{2:d MMMM yyyy} г.\n", pg.Name, pg.Percentage, pg.Date, i++);
            }

            children.AddRange(CreateStringNodes(doc, "Workflow", percentageGraph.ToString(), 638, 638, 14));

            foreach (var item in children)
            {
                root.AppendChild(item);
            }

            doc.AppendChild(root);
            return(doc);
        }