示例#1
0
        protected override IQueryable <SpeakerCareerScheduleModel> CreateReport()
        {
            IQueryable <SpeakerCareerScheduleModel> query = Uow.GetRepositoryForEntityType <Speaker>().GetQueryable().AsNoTracking()
                                                            .Include(s => s.Person)
                                                            .Include(s => s.CareerScheduleDetails.Select(csd => csd.CareerDetail.Career))
                                                            .Include(s => s.CareerScheduleDetails.Select(csd => csd.CareerDetail.Course))
                                                            .Where(s => s.Status)
                                                            .Select(s => new SpeakerCareerScheduleModel
            {
                Id       = s.Id,
                Name     = s.Person.Name,
                LastName = s.Person.LastName,
                CareerScheduleBySpeakerDetails = s.CareerScheduleDetails.Where(csd => csd.Status).Select(csd => new SpeakerCareerScheduleDetailModel
                {
                    Id                = csd.Id,
                    Day               = csd.Day,
                    StartTime         = csd.StartTime,
                    EndTime           = csd.EndTime,
                    CareerDescription = csd.CareerDetail.Career.Description,
                    CourseDescription = csd.CareerDetail.Course.Description
                }).OrderBy(csd => csd.CareerDescription)
            });

            return(query);
        }
示例#2
0
        public virtual async Task <HttpResponseMessage> Put(T entity)
        {
            Uow.GetRepositoryForEntityType <T>().Update(entity);
            await Uow.CommitAsync();

            return(new HttpResponseMessage(HttpStatusCode.NoContent));
        }
示例#3
0
        public virtual async Task <HttpResponseMessage> Delete(object id)
        {
            Uow.GetRepositoryForEntityType <T>().Delete(id);
            await Uow.CommitAsync();

            return(new HttpResponseMessage(HttpStatusCode.NoContent));
        }
示例#4
0
        public virtual async Task <HttpResponseMessage> Patch([FromBody] string json)
        {
            ExpandoObject expandoObject = JsonConvert.DeserializeObject <ExpandoObject>(json);

            Uow.ValidateOnSaveEnabled(false);
            Uow.GetRepositoryForEntityType <T>().Update(expandoObject);
            await Uow.CommitAsync();

            return(new HttpResponseMessage(HttpStatusCode.NoContent));
        }
示例#5
0
        public virtual async Task <HttpResponseMessage> Get(int page, int pageSize, string orderBy, string where)
        {
            IQueryable <T> query    = Uow.GetRepositoryForEntityType <T>().GetQueryable().AsNoTracking();
            dynamic        response = await query.CreateQuery(page, pageSize, orderBy, where, null);

            return(new HttpResponseMessage
            {
                Content = new ObjectContent <dynamic>(response, new JsonMediaTypeFormatter(),
                                                      new MediaTypeHeaderValue("application/json"))
            });
        }
示例#6
0
        public virtual async Task <HttpResponseMessage> Get(object id)
        {
            T entity = await Uow.GetRepositoryForEntityType <T>().FindAsync(id);

            if (entity != null)
            {
                return(new HttpResponseMessage
                {
                    Content = new ObjectContent <T>(entity, new JsonMediaTypeFormatter(),
                                                    new MediaTypeHeaderValue("application/json"))
                });
            }

            throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
        }
示例#7
0
        public virtual async Task <HttpResponseMessage> Post(T entity)
        {
            Uow.GetRepositoryForEntityType <T>().Add(entity);
            await Uow.CommitAsync();

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);

            if (entity is IEntity)
            {
                response.Headers.Location =
                    new Uri(Request.RequestUri.AbsoluteUri +
                            (((IEntity)entity).GetId() != null
                                ? "/" + string.Join("/", ((IEntity)entity).GetId())
                                : ""));
            }

            return(response);
        }
示例#8
0
        protected override IQueryable <StudentEnrollmentResultModel> CreateReport(StudentEnrollmentQueryModel model)
        {
            IQueryable <StudentEnrollmentResultModel> query = Uow.GetRepositoryForEntityType <Enrollment>().GetQueryable()
                                                              .AsNoTracking()
                                                              .Include(e => e.Student.Person)
                                                              .Include(e => e.EnrollmentDetails.Select(ed => ed.CareerDetail.Course)).Select(e =>
                                                                                                                                             new StudentEnrollmentResultModel
            {
                StudentId                = e.StudentId,
                StudentName              = e.Student.Person.Name,
                StudentLastName          = e.Student.Person.LastName,
                Created                  = e.Created,
                StudentEnrollmentDetails = e.EnrollmentDetails.Select(ed => new
                                                                      StudentEnrollmentDetailResultModel
                {
                    CourseId          = ed.CareerDetail.CourseId,
                    CourseDescription = ed.CareerDetail.Course.Description,
                    CourseCode        = ed.CareerDetail.Course.Code,
                })
            });

            if (model != null)
            {
                if (model.StudentId > 0)
                {
                    query = query.Where(e => e.StudentId == model.StudentId);
                }


                if (model.StartDate != null && model.EndDate != null)
                {
                    query = query.Where(e => e.Created >= model.StartDate && e.Created <= model.EndDate);
                }
            }

            return(query);
        }