示例#1
0
        public async Task <CampusResponse> CreateCampus(PostCampusRequest model)
        {
            try
            {
                var buildings = await _unitOfWork.Repository <Building>().GetAll().Where(x => model.Geom.Contains(x.Geom)).ToListAsync();

                foreach (var item in buildings)
                {
                    item.CampusId = null;
                    if (item.BuildingStreetSegments.Count != 0)
                    {
                        _unitOfWork.Repository <BuildingStreetSegment>().DeleteRange((IQueryable <BuildingStreetSegment>)item.BuildingStreetSegments);
                    }
                }
                var campus = new Campus
                {
                    Name       = model.Name,
                    Buildings  = buildings,
                    CreateDate = DateTime.UtcNow.AddHours(7),
                    Geom       = model.Geom
                };
                await _unitOfWork.Repository <Campus>().InsertAsync(campus);

                await _unitOfWork.CommitAsync();

                List <CampusStreetSegment> list = new List <CampusStreetSegment>();
                foreach (var item in model.StreetSegmentId)
                {
                    CampusStreetSegment campusStreet = new CampusStreetSegment
                    {
                        StreetSegmentId = item,
                        CampusId        = campus.Id
                    };
                    list.Add(campusStreet);
                }
                await _unitOfWork.Repository <CampusStreetSegment>().InsertRangeAsync(list.AsQueryable());

                await _unitOfWork.CommitAsync();

                return(new CampusResponse
                {
                    Id = campus.Id,
                    CreateDate = campus.CreateDate,
                    Geom = campus.Geom,
                    ModifyDate = campus.ModifyDate,
                    Name = campus.Name
                });
            }
            catch (Exception e)
            {
                throw new CrudException(HttpStatusCode.BadRequest, "Create Campus Error!!!", e.InnerException?.Message);
            }
        }
示例#2
0
        public async Task <CampusResponse> PutCampus(int id, PutCampusRequest model)
        {
            var campus = await _unitOfWork.Repository <Campus>().GetById(id);

            if (campus != null)
            {
                try
                {
                    campus.Name       = model.Name;
                    campus.ModifyDate = DateTime.UtcNow.AddHours(7);
                    var listStreetSegment = _unitOfWork.Repository <CampusStreetSegment>().GetAll().Where(x => x.CampusId == id);
                    _unitOfWork.Repository <CampusStreetSegment>().DeleteRange(listStreetSegment);
                    await _unitOfWork.Repository <Campus>().Update(campus, id);

                    List <CampusStreetSegment> list = new List <CampusStreetSegment>();
                    foreach (var item in model.StreetSegmentId)
                    {
                        CampusStreetSegment campusStreet = new CampusStreetSegment
                        {
                            StreetSegmentId = item,
                            CampusId        = campus.Id
                        };
                        list.Add(campusStreet);
                    }
                    await _unitOfWork.Repository <CampusStreetSegment>().InsertRangeAsync(list.AsQueryable());

                    await _unitOfWork.CommitAsync();

                    return(new CampusResponse
                    {
                        Id = campus.Id,
                        CreateDate = campus.CreateDate,
                        Geom = campus.Geom,
                        ModifyDate = campus.ModifyDate,
                        Name = campus.Name
                    });
                }
                catch (Exception e)
                {
                    throw new CrudException(HttpStatusCode.BadRequest, "Update Campus Error!!!", e.InnerException?.Message);
                }
            }
            else
            {
                return(null);
            }
        }