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

            var locationId = await _locationRepository.AddAsync(mLocation);

            return(CreatedAtRoute("GetByLocationIdAsync", new { controller = "Locations", locationId = locationId }, mLocation));
        }
        public int Add(LocationAddModel mLocation)
        {
            var customer = _context.Projects.FirstOrDefault(l => l.ProjectId == mLocation.ProjectId);

            if (customer == null)
            {
                throw new ExpectException("Could not find Project data which ProjectId equal to " + mLocation.ProjectId);
            }

            var device = _context.Devices.FirstOrDefault(l => l.DeviceId == mLocation.DeviceId);

            if (device == null)
            {
                throw new ExpectException("Could not find Device data which DeviceId equal to " + mLocation.DeviceId);
            }

            //InstallationNumber must be unique
            var checkData = _context.Locations.Where(dl => dl.InstallationNumber == mLocation.InstallationNumber).ToList();

            if (checkData.Count > 0)
            {
                throw new ExpectException("The data which InstallationNumber equal to '" + mLocation.InstallationNumber + "' already exist in system");
            }

            //DeviceSerialNo must be unique
            checkData = _context.Locations.Where(dl => dl.DeviceSerialNo == mLocation.DeviceSerialNo).ToList();
            if (checkData.Count > 0)
            {
                throw new ExpectException("The data which DeviceSerialNo equal to '" + mLocation.DeviceSerialNo + "' already exist in system");
            }

            //Check Orientation
            if (!Enum.IsDefined(typeof(Orientation), mLocation.Orientation))
            {
                throw new ExpectException("Invalid Orientation.You can get correct Orientation values from API");
            }

            //Check DeviceType
            if (!Enum.IsDefined(typeof(DeviceType), mLocation.DeviceType))
            {
                throw new ExpectException("Invalid DeviceType.You can get correct DeviceType values from API");
            }

            //Check CommMode
            if (!Enum.IsDefined(typeof(CommMode), mLocation.CommMode))
            {
                throw new ExpectException("Invalid CommMode.You can get correct CommMode values from API");
            }

            //Get UserInfo
            var user = _loginUser.GetLoginUserInfo();

            var model = new Location
            {
                Building             = mLocation.Building,
                CommAddress          = mLocation.CommAddress,
                CommMode             = mLocation.CommMode,
                CurrentPosition      = mLocation.CurrentPosition,
                Description          = mLocation.Description,
                DeviceSerialNo       = mLocation.DeviceSerialNo,
                DeviceId             = mLocation.DeviceId,
                DeviceType           = mLocation.DeviceType,
                FavorPositionFirst   = mLocation.FavorPositionFirst,
                FavorPositionrSecond = mLocation.FavorPositionrSecond,
                FavorPositionThird   = mLocation.FavorPositionThird,
                Floor = mLocation.Floor,
                InstallationNumber = mLocation.InstallationNumber,
                Orientation        = mLocation.Orientation,
                ProjectId          = mLocation.ProjectId,
                RoomNo             = mLocation.RoomNo,
                Creator            = user.UserName,
                CreateDate         = DateTime.Now
            };

            _context.Locations.Add(model);
            _context.SaveChangesAsync();
            return(model.LocationId);
        }