public async Task <IHttpActionResult> PostEducation(EducationBindingModel model)
        {
            var userId = this.User.Identity.GetUserId();

            ApplicationUser currentUser = await this.Data.Users.All().FirstOrDefaultAsync(us => us.Id == userId);


            if (userId == null)
            {
                return(this.BadRequest("Invalid session token."));
            }

            if (model == null)
            {
                return(this.BadRequest("Invalid input data"));
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var degree = await this.Data.Degrees.All()
                         .FirstOrDefaultAsync(d => d.Name == model.DegreeName);

            if (degree == null)
            {
                var errorMessage = "Invalid degree name.Posiible degree names: " +
                                   "Juris Doctor (J.D.) ," + "Doctor of Medicine (M.D.) ," +
                                   "Master's of Business Administration (M.B.A) ," +
                                   "Engineer's Degree ," + "High School" +
                                   "Doctor of Philosophy (Ph.D.) ," +
                                   "Associate's Degree ," +
                                   "Master's Degree ," +
                                   "Bachelor's Degree ," +
                                   "Bachelor's Degree ,";
                return(this.BadRequest(errorMessage));
            }

            await this.Data.SaveChangesAsync();

            Education education = new Education()
            {
                Name      = model.Name,
                StartDate = model.StartDate,
                EndDate   = model.EndDate,
                Grade     = model.Grade,
                Location  = model.Location,
                Users     = new List <ApplicationUser>()
                {
                    currentUser
                },
                DegreeId = degree.Id,
            };

            this.Data.Educations.Add(education);
            await this.Data.SaveChangesAsync();

            return(this.StatusCode(HttpStatusCode.Created));
        }
Exemplo n.º 2
0
        public void CreateOrUpdate(EducationBindingModel model)
        {
            using (var context = new Database())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        Education element = context.Educations.FirstOrDefault(rec =>
                                                                              rec.Id == model.Id);

                        if (model.Id.HasValue)
                        {
                            if (element == null)
                            {
                                throw new Exception("Элемент не найден");
                            }
                        }
                        else
                        {
                            element = new Education();
                            context.Educations.Add(element);
                        }
                        element.ClientId     = model.ClientId;
                        element.DateOfBuying = model.DateOfBuying;
                        element.Duration     = model.Duration;
                        element.FinalCost    = model.FinalCost;
                        element.Status       = model.Status;
                        context.SaveChanges();

                        var groupCourses = model.EducationCourses
                                           .GroupBy(rec => rec.CourseId)
                                           .Select(rec => new
                        {
                            CourseId = rec.Key,
                            Count    = rec.Sum(r => r.Count)
                        });

                        foreach (var groupCourse in groupCourses)
                        {
                            context.EducationCourses.Add(new EducationCourse
                            {
                                EducationId = element.Id,
                                CourseId    = groupCourse.CourseId,
                                Count       = groupCourse.Count
                            });
                            context.SaveChanges();
                        }

                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
Exemplo n.º 3
0
        public void SaveEducationPaymentsToPdfFile(string fileName, EducationBindingModel visit, string email)
        {
            var    Visits = visitLogic.Read(visit).ToList();
            string title  = "Список курсов в период с " + visit.DateFrom.ToString() + " по " + visit.DateTo.ToString();

            SaveToPdf.CreateDoc(new PdfInfo
            {
                FileName   = fileName,
                Title      = title,
                Educations = visitLogic.Read(visit).ToList(),
                Payments   = GetEducationPayments(visit)
            });
            SendMail(email, fileName, title);
        }
Exemplo n.º 4
0
        public Dictionary <int, List <PaymentViewModel> > GetEducationPayments(EducationBindingModel model)
        {
            var visits = visitLogic.Read(model).ToList();
            Dictionary <int, List <PaymentViewModel> > payments = new Dictionary <int, List <PaymentViewModel> >();

            foreach (var visit in visits)
            {
                var visitPayments = paymentLogic.Read(new PaymentBindingModel {
                    EducationId = visit.Id
                }).ToList();
                payments.Add(visit.Id, visitPayments);
            }
            return(payments);
        }
Exemplo n.º 5
0
        public void Delete(EducationBindingModel model)
        {
            using (var context = new Database())
            {
                Education element = context.Educations.FirstOrDefault(rec => rec.Id == model.Id.Value);

                if (element != null)
                {
                    context.Educations.Remove(element);
                    context.SaveChanges();
                }
                else
                {
                    throw new Exception("Элемент не найден");
                }
            }
        }
Exemplo n.º 6
0
 public List <EducationViewModel> Read(EducationBindingModel model)
 {
     using (var context = new Database())
     {
         return(context.Educations.Where(rec => rec.Id == model.Id || (rec.ClientId == model.ClientId) && (model.DateFrom == null && model.DateTo == null || rec.DateOfBuying >= model.DateFrom && rec.DateOfBuying <= model.DateTo))
                .Select(rec => new EducationViewModel
         {
             Id = rec.Id,
             ClientId = rec.ClientId,
             Duration = rec.Duration,
             FinalCost = rec.FinalCost,
             DateOfBuying = rec.DateOfBuying,
             LeftSum = rec.FinalCost - context.Payments.Where(recP => recP.EducationId == rec.Id).Select(recP => recP.Sum).Sum(),
             Status = rec.Status,
             EducationCourses = GetVisitCourseViewModel(rec)
         })
                .ToList());
     }
 }
Exemplo n.º 7
0
        public ActionResult NewEducation(Guid profileId, EducationBindingModel form)
        {
            var profile = _uow.Profiles.FindById(profileId);
            profile.AddEducation(form.Specialization, form.ProgramDescription,
                                    form.EducationPlace, form.Duration, form.StartDate, form.EndDate);
            _uow.Save();

            return RedirectToAction<UserProfileController>(c => c.Index());
        }
Exemplo n.º 8
0
 public ActionResult NewEducation(Guid profileId)
 {
     var vm = new EducationBindingModel()
     {
         ProfileId = profileId,
         StartDate = new MonthYear(Month.Jan, DateTime.Now.Year),
         EndDate = new MonthYear(Month.Jan, DateTime.Now.Year)
     };
     return View(vm);
 }