public async Task <bool> isCustomerAlreadyExisted(CustomerSaveDto customerSave) { return(await _context.Customers .AnyAsync(x => x.FirstName.ToLower() == customerSave.FirstName.ToLower() && x.MiddleName.ToLower() == customerSave.MiddleName.ToLower() && x.LastName.ToLower() == customerSave.LastName.ToLower())); }
public async Task <ErrorValidator> Validate(Customer entity, CustomerSaveDto resourceSave) { if (entity.FirstName != resourceSave.FirstName || entity.MiddleName != resourceSave.MiddleName || entity.LastName != resourceSave.LastName) { if (await isCustomerAlreadyExisted(resourceSave)) { return(new ErrorValidator("Customer Already Exist!")); } } if (entity.CellphoneNumber != resourceSave.CellphoneNumber) { if (await isContactNumberAlreadyExisted(resourceSave.CellphoneNumber)) { return(new ErrorValidator("Contact Number Already Existed")); } } if (entity.EmailAddress != resourceSave.EmailAddress) { if (!isValidEmailAddress(resourceSave.EmailAddress)) { return(new ErrorValidator("Invalid Email Address")); } if (await isEmailAddressAlreadyExisted(resourceSave.EmailAddress)) { return(new ErrorValidator("Email Address Already Existed")); } } return(new ErrorValidator()); }
public HttpResponseMessage Update(CustomerSaveDto targetCustomer) { if (!ModelState.IsValid) { return(Request.CreateResponse()); } var payload = _service.Update(targetCustomer); var statusCode = (payload?.Errors?.Count ?? 0) > 0 ? HttpStatusCode.BadRequest : HttpStatusCode.OK; return(Request.CreateResponse(statusCode, payload)); }
/// <summary> /// attempts to create a new customer based on the model provided /// </summary> /// <param name="customer">a JSON-serialized customer model containing all info needed to create a customer</param> /// <returns>a response model containing the results of the validation/transaction</returns> public ResponseModel Create(CustomerSaveDto customer) { //TODO: validate model using modelstate var responsePayload = new ResponseModel(); _unitOfWork.CustomerRepository.Create(Mapper.Map <Customer>(customer)); _unitOfWork.SaveChanges(); responsePayload.Message = "success"; return(responsePayload); }
public HttpResponseMessage Create(CustomerSaveDto customer) { if (!ModelState.IsValid) { return(Request.CreateResponse()); } var responseModel = _service.Create(customer); responseModel.Message = "success"; return(Request.CreateResponse(HttpStatusCode.OK, responseModel)); }
public async Task <ErrorValidator> Validate(CustomerSaveDto resourceSave) { if (await isCustomerAlreadyExisted(resourceSave)) { return(new ErrorValidator("Customer Already Exist!")); } if (await isContactNumberAlreadyExisted(resourceSave.CellphoneNumber)) { return(new ErrorValidator("Contact Number Already Existed")); } if (!isValidEmailAddress(resourceSave.EmailAddress)) { return(new ErrorValidator("Invalid Email Address")); } if (await isEmailAddressAlreadyExisted(resourceSave.EmailAddress)) { return(new ErrorValidator("Email Address Already Existed")); } return(new ErrorValidator()); }
public async Task <IActionResult> Create([ModelBinder(BinderType = typeof(JsonModelBinder))][FromBody] CustomerSaveDto resourceSave, IFormFile profilePictureFile) { _auditTrailRepo.User = User; var activity = Validator.GenerateActivity(resourceSave, TransactionType.ADD); var validator = await _validator.Validate(resourceSave); if (validator.HasError) { await _auditTrailRepo.SaveFailedTrail(new AuditTrailFailedSaveDto() { Action = TransactionType.ADD, Activity = activity, ErrorMessage = validator.Message }); return(BadRequest(validator.Message)); } var customer = _mapper.Map <Customer>(resourceSave); _crudPattern.Create(customer); var newFileName = $"{Guid.NewGuid()}{Path.GetExtension(profilePictureFile.FileName)}"; customer.ProfilePictureFileName = newFileName; if (!await _crudPattern.SaveChanges()) { return(BadRequest("Nothing has been Saved!")); } await _blobStorageRepo.UploadFile(profilePictureFile, newFileName); await _auditTrailRepo.SaveSuccessTrail(new AuditTrailSuccessSaveDto() { Action = TransactionType.ADD, Activity = activity }); return(StatusCode(201)); }
public async Task <IActionResult> Update([FromRoute] int id, [FromBody] CustomerSaveDto resourceSave) { _auditTrailRepo.User = User; var customer = await _crudPattern.Get(id); if (customer == null) { return(NotFound()); } var activity = Validator.GetDifferences(customer, _mapper.Map <Customer>(resourceSave)); var validator = await _validator.Validate(customer, resourceSave); if (validator.HasError) { await _auditTrailRepo.SaveFailedTrail(new AuditTrailFailedSaveDto() { Action = TransactionType.EDIT, Activity = activity, ErrorMessage = validator.Message, }); return(BadRequest(validator.Message)); } _crudPattern.Update(resourceSave, customer); if (!await _crudPattern.SaveChanges()) { return(BadRequest("Nothing has been Saved!")); } await _auditTrailRepo.SaveSuccessTrail(new AuditTrailSuccessSaveDto() { Action = TransactionType.EDIT, Activity = activity }); return(Ok(customer)); }
/// <summary> /// attempts to update an existing customer based on the model provided /// </summary> /// <param name="customer">a JSON-serialized customer model containing updated info with an Id that matches an existing customer </param> /// <returns>a response model containing the results of the validation/transaction. </returns> public ResponseModel Update(CustomerSaveDto customer) { /* create empty response model. will return no matter what happens next */ var response = new ResponseModel(new List <string>()); var customerEntityToUpdate = _unitOfWork.CustomerRepository.GetById(customer.Id); if (customerEntityToUpdate == null) { response.Message = "update failed."; response.Errors.Add($"no customer matching id {customer.Id} was found."); return(response); } customerEntityToUpdate.Age = customer.Age; customerEntityToUpdate.Email = customer.Email; customerEntityToUpdate.FirstName = customer.FirstName; customerEntityToUpdate.LastName = customer.LastName; var addressEntityToUpdate = customerEntityToUpdate.Address; addressEntityToUpdate.Street = customer.Address.Street; addressEntityToUpdate.Unit = customer.Address.Unit; addressEntityToUpdate.City = customer.Address.City; addressEntityToUpdate.State = customer.Address.State; addressEntityToUpdate.PostalCode = customer.Address.PostalCode; customerEntityToUpdate.Address = addressEntityToUpdate; _unitOfWork.CustomerRepository.Update(customerEntityToUpdate); var result = _unitOfWork.SaveChanges(); response.Result = null; response.Message = result > 0 ? "success" : "no records updated"; return(response); }
public HttpResponseMessage Create(CustomerSaveDto newCustomer) { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } try { var statusCode = HttpStatusCode.OK; var responseModel = new CustomerResponseModel(); var address = newCustomer.Address; var addressDbo = new Address() { Street = address.Street, Unit = address.Unit, City = address.City, State = address.State, PostalCode = address.PostalCode }; var customerDbo = new Customer() { FirstName = newCustomer.FirstName, LastName = newCustomer.LastName, Address = addressDbo, Age = Convert.ToInt32(newCustomer.Age), //Address_Id = Convert.ToInt32(newCustomer.Address_Id), CreatedOn = DateTime.Now.ToUniversalTime(), Email = newCustomer.Email }; CustomerServiceDb.Customers.Add(customerDbo); var rowsSaved = CustomerServiceDb.SaveChanges(); if (rowsSaved > 0) { responseModel.Message = "success"; } //if(ModelState.IsValid) // var errors = new List<string>(); //if (newCustomer == null) //{ // errors.Add("invalid customer. customer was not added."); // } // else // { // Validate(newCustomer); // if(ModelState.IsValid) //var message = ""; //var isAgeValid = CustomerValidator.ValidateAge(newCustomer.Age, out message); //if (!isAgeValid) //{ // errors.Add(message); //} //var isFirstNameValid = // CustomerValidator.ValidateFirstName(newCustomer.FirstName, out message); //if (!isFirstNameValid) //{ // errors.Add(message); //} //var isEmailValid = CustomerValidator.ValidateEmail(newCustomer.Email, out message); //if (!isEmailValid) //{ // errors.Add(message); //} //Validate //if(statusCode == HttpStatusCode.OK) { //else errors.Add("unknown error."); } //} //if (errors.Count > 0) //{ // responseModel.Message = "failed to create customer"; // statusCode = HttpStatusCode.BadRequest; //} //responseModel.Errors = errors; return(Request.CreateResponse(statusCode, responseModel)); } catch (Exception e) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e)); } }