public async Task <ActionResult> UpdateCustomerAsync(string id, SaveCustomerDTO saveCustomerDTO) { var customerAsync = await _unitOfWork.Customers.FindAsync(c => c.Id.Equals(id)); // Check customer exists var customer = customerAsync.SingleOrDefault(); if (customer == null) { return(NotFound(new { Id = "Mã khách hàng này không tồn tại." })); } // Check phone of customer exists except self var customerExist = await _unitOfWork.Customers.FindAsync(c => c.Phone.Equals(saveCustomerDTO.Phone) && !c.Id.Equals(id)); if (customerExist.Count() != 0) { return(BadRequest(new { Phone = "Số điện thoại này đã tồn tại." })); } // Mapping: SaveCustomer _mapper.Map <SaveCustomerDTO, Customer>(saveCustomerDTO, customer); await _unitOfWork.CompleteAsync(); return(Ok(new { success = true, data = customer, message = "Sửa thành công." })); }
public async Task <IActionResult> UpdateCustomer(string id, [FromForm] SaveCustomerDTO saveCustomerDTO) { var user = await _userManager.FindByIdAsync(id); if (user == null) { return(BadRequest("Invalid User")); } var userClaims = await _userManager.GetClaimsAsync(user); if (!string.IsNullOrEmpty(saveCustomerDTO.PhoneNumber)) { user.PhoneNumber = saveCustomerDTO.PhoneNumber; } if (!string.IsNullOrEmpty(saveCustomerDTO.Password)) { await _userManager.ChangePasswordAsync(user, saveCustomerDTO.CurrentPassword, saveCustomerDTO.Password); } if (!string.IsNullOrEmpty(saveCustomerDTO.Name)) { // check for existing claim and remove it var name = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.Name); if (name != null) { await _userManager.RemoveClaimAsync(user, name); } await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Name, saveCustomerDTO.Name)); } if (!string.IsNullOrEmpty(saveCustomerDTO.Address)) { // check for existing claim and remove it var address = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.StreetAddress); if (address != null) { await _userManager.RemoveClaimAsync(user, address); } await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.StreetAddress, saveCustomerDTO.Address)); } if (!string.IsNullOrEmpty(saveCustomerDTO.Gender)) { // check for existing claim and remove it var gender = userClaims.SingleOrDefault(c => c.Type == ClaimTypes.Gender); if (gender != null) { await _userManager.RemoveClaimAsync(user, gender); } await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Gender, saveCustomerDTO.Gender)); } await _userManager.UpdateAsync(user); return(Ok()); }
public async Task <ActionResult> PutCustomerAsync(string id, SaveCustomerDTO saveCustomerDTO) { var customer = await _service.UpdateCustomerAsync(id, saveCustomerDTO); return(customer); }
public async Task <ActionResult> AddOrderAsync(AddOrder values) { // Check Customer existence var customer = await _unitOfWork.Customers.GetByAsync(values.CustomerId); if (customer == null) // Nếu không tồn tại khách hàng này trong db { // Add Customer var saveCustomerDTO = new SaveCustomerDTO { Id = values.CustomerId, FullName = values.FullName, Phone = values.Phone, }; // Mapping: SaveCustomer customer = _mapper.Map <SaveCustomerDTO, Customer>(saveCustomerDTO); await _unitOfWork.Customers.AddAsync(customer); } else { customer.FullName = values.FullName; customer.Phone = values.Phone; } // Lấy DepartureDate Id var departureDateIdAsync = await _unitOfWork.Dates.FindAsync(d => d.DepartureDate == Convert.ToDateTime(values.DepartureDateName)); var departureDateId = departureDateIdAsync .Select(d => d.Id).SingleOrDefault(); // Add Order SaveOrderDTO saveOrderDTO = new SaveOrderDTO { Id = await this.autoOrderIdAsync(), TicketCount = values.TicketCount, TotalPrice = values.TotalPrice, CreateAt = DateTime.Now, // Lấy thời điểm đặt vé Status = 0, CustomerId = values.CustomerId, DepartureDateId = departureDateId, ReturnDateId = null, UserId = null }; // Lấy ReturnDate Id if (values.ReturnDateName != "") { var returnDateIdAsync = await _unitOfWork.Dates.FindAsync(d => d.DepartureDate == Convert.ToDateTime(values.ReturnDateName)); saveOrderDTO.ReturnDateId = returnDateIdAsync .Select(d => d.Id).SingleOrDefault(); } // Mapping: SaveOrder var order = _mapper.Map <SaveOrderDTO, Order>(saveOrderDTO); await _unitOfWork.Orders.AddAsync(order); IList <Ticket> tickets = new List <Ticket>(); // Dòng này để kiểm tra dữ liệu tạm thời (xóa sau) // Add Tickets for (int i = 0; i < values.FlightIds.Count; i++) { for (int j = 0; j < values.Passengers.Count; j++) { // Luggage Price var luggageAsync = await _unitOfWork.Luggages.FindAsync(l => l.Id == values.Passengers.ElementAt(j).LuggageIds.ElementAt(i)); decimal luggagePrice = Convert.ToDecimal(luggageAsync.SingleOrDefault().Price); // Ticket Price var ticketAsync = await _unitOfWork.FlightTicketCategories.FindAsync(ft => ft.TicketCategoryId == values.Passengers.ElementAt(j).TicketCategoryId && ft.FlightId == values.FlightIds.ElementAt(i)); decimal ticketPrice = Convert.ToDecimal(ticketAsync.SingleOrDefault().Price); // Lấy ngày bay, i = 0 là của chiều đi, i = 1 là của chiều về int dateId = 0; if (i == 0) { dateId = order.DepartureDateId; } else { dateId = (int)order.ReturnDateId; } var saveTicketDTO = new SaveTicketDTO { Id = await this.autoTicketIdAsync(), PassengerName = values.Passengers.ElementAt(j).PassengerName, PassengerGender = values.Passengers.ElementAt(j).PassengerGender, LuggageId = values.Passengers.ElementAt(j).LuggageIds.ElementAt(i), FlightId = values.FlightIds.ElementAt(i), OrderId = order.Id, DateId = dateId, TicketCategoryId = values.Passengers.ElementAt(j).TicketCategoryId, Price = ticketPrice + luggagePrice }; // Mapping: SaveTicket var ticket = _mapper.Map <SaveTicketDTO, Ticket>(saveTicketDTO); tickets.Add(ticket); // Xóa sau await _unitOfWork.Tickets.AddAsync(ticket); await _unitOfWork.CompleteAsync(); } } return(Ok(new { success = true, message = "Thêm thành công.", data = tickets })); }