public IActionResult CreatePhone(Guid organizationId, [FromBody] PhoneForCreationDto phone)
        {
            if (organizationId == new Guid())
            {
                return(BadRequest());
            }

            if (phone == null)
            {
                return(BadRequest());
            }

            if (!_unitOfWork.Organizations.IsOrganizationExists(organizationId))
            {
                return(NotFound());
            }

            var mappedPhone = _unitOfWork.Phones.CreatePhone(organizationId, phone);

            if (!_unitOfWork.Complete())
            {
                return(StatusCode(500, "A problem happened while handling your request!"));
            }

            var phoneToReturn = _mapper.Map <PhoneDto>(mappedPhone);

            return(CreatedAtRoute("GetPhone",
                                  new { organizationId = organizationId, phoneId = phoneToReturn.PhoneId }, phoneToReturn));
        }
コード例 #2
0
        public async Task <ActionResult> Post([FromBody] PhoneForCreationDto phoneForCreationDto)
        {
            var phone = _mapper.Map <Phone>(phoneForCreationDto);

            _ = await _phoneService.Insert(phone);

            return(Response(phone.PhoneId));
        }
コード例 #3
0
        public Phone CreatePhone(Guid organizationId, PhoneForCreationDto phone)
        {
            var organizationFromContext =
                _context.Organizations.FirstOrDefault(o => o.OrganizationId == organizationId);
            var mappedPhone = _mapper.Map <Phone>(phone);

            organizationFromContext.Phones.Add(_mapper.Map <Phone>(mappedPhone));

            return(mappedPhone);
        }
コード例 #4
0
        public IHttpActionResult SavePhone([FromBody] PhoneForCreationDto newPhone)
        {
            var response = new PhoneResponse();

            if (string.IsNullOrEmpty(newPhone?.PhoneNumber))
            {
                response.Meta.HttpStatusCode = (int)HttpStatusCode.BadRequest;
                response.Meta.ErrorMessage   = "Phone Number is null!";
                response.Meta.ErrorType      = "DataValidationError";

                return(ResponseMessage(
                           Request.CreateResponse(
                               HttpStatusCode.BadRequest,
                               response)
                           ));
            }

            if (!ModelState.IsValid)
            {
                response.Meta.HttpStatusCode = (int)HttpStatusCode.BadRequest;
                response.Meta.ErrorMessage   = "Phone object contains Invalid data";
                response.Meta.ErrorType      = "DataValidationError";

                return(ResponseMessage(
                           Request.CreateResponse(
                               HttpStatusCode.BadRequest,
                               response)
                           ));
            }

            // parse the incoming string and see if it's a valid phone number
            var parsedPhone = PhoneHelper.Parse(newPhone.PhoneNumber);

            if (parsedPhone == null)
            {
                response.Meta.HttpStatusCode = (int)HttpStatusCode.BadRequest;
                response.Meta.ErrorMessage   = $"Phone Number = {newPhone.PhoneNumber} is Invalid!";
                response.Meta.ErrorType      = "InvalidDataError";

                return(ResponseMessage(
                           Request.CreateResponse(
                               HttpStatusCode.BadRequest,
                               response)));
            }

            try
            {
                if (BondsBuddyDataStore.Current.Phones.Exists(p => p.RawPhoneNumber == parsedPhone.RawPhoneNumber))
                {
                    response.Meta.HttpStatusCode = (int)HttpStatusCode.Conflict;
                    response.Meta.ErrorMessage   = $"Phone object with Phone Number = {newPhone.PhoneNumber} already exists in database!";
                    response.Meta.ErrorType      = "DataValidationError";

                    return(ResponseMessage(
                               Request.CreateResponse(
                                   HttpStatusCode.Conflict,
                                   response)));
                }

                int maxPhoneId = BondsBuddyDataStore.Current.Phones.Any() ? BondsBuddyDataStore.Current.Phones.Max(a => a.Id) : 0;

                var phoneToCreate = Mapper.Map <CanonicalPhoneNumber, Phone>(parsedPhone);

                phoneToCreate.Id        = ++maxPhoneId;
                phoneToCreate.PhoneName = newPhone.PhoneName;

                BondsBuddyDataStore.Current.Phones.Add(phoneToCreate);

                var newlyCreatedPhone = BondsBuddyDataStore.Current.Phones.First(a => a.Id == phoneToCreate.Id);

                response.Meta.HttpStatusCode = (int)HttpStatusCode.OK;

                var newlyCreatedPhoneDto = Mapper.Map <Phone, PhoneDto>(newlyCreatedPhone);
                response.Phone = newlyCreatedPhoneDto;

                return(CreatedAtRoute("GetPhone", new { id = phoneToCreate.Id }, response));
            }
            catch (Exception exception)
            {
                // TODO: Log Exception details
                Console.WriteLine(exception.Message);

                response.Meta.HttpStatusCode = (int)HttpStatusCode.InternalServerError;
                response.Meta.ErrorMessage   =
                    "Oops! An unexpected error occurred. Our DevOps is investigating. Please try again later.";
                response.Meta.ErrorType = "ApiServerError";

                return(ResponseMessage(
                           Request.CreateResponse(
                               HttpStatusCode.InternalServerError,
                               response)));
            }
        }