public async Task <IActionResult> AddAsync([FromBody] GroupLocationAddModel mGroupLocation)
        {
            if (!ModelState.IsValid)
            {
                return(HttpBadRequest(ModelStateError()));
            }

            var groupLocationId = await _groupLocationRepository.AddAsync(mGroupLocation);

            return(CreatedAtRoute("GetByGroupLocationIdAsync", new { controller = "GroupLocations", groupLocationId = groupLocationId }, mGroupLocation));
        }
Example #2
0
        public async Task <int> AddAsync(GroupLocationAddModel mGroupLocation)
        {
            var group = _context.Groups.FirstOrDefault(c => c.GroupId == mGroupLocation.GroupId);

            if (group == null)
            {
                throw new ExpectException("Could not find Group data which GroupId equal to " + mGroupLocation.GroupId);
            }

            var location = _context.Locations.FirstOrDefault(c => c.LocationId == mGroupLocation.LocationId);

            if (location == null)
            {
                throw new ExpectException("Could not find Location data which LocationId equal to " + mGroupLocation.LocationId);
            }

            //GroupId and LocationId must be unique
            var checkData = await _context.GroupLocations
                            .Where(c => c.GroupId == mGroupLocation.GroupId &&
                                   c.LocationId == mGroupLocation.LocationId).ToListAsync();

            if (checkData.Count > 0)
            {
                throw new ExpectException("There is already exist data which GroupId equal to "
                                          + mGroupLocation.GroupId + " and LocationId equal to " + mGroupLocation.LocationId);
            }


            var model = new GroupLocation
            {
                GroupId    = mGroupLocation.GroupId,
                LocationId = mGroupLocation.LocationId
            };

            _context.GroupLocations.Add(model);
            await _context.SaveChangesAsync();

            return(model.GroupLocationId);
        }