Exemplo n.º 1
0
        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." }));
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        public async Task <ActionResult> PutCustomerAsync(string id, SaveCustomerDTO saveCustomerDTO)
        {
            var customer = await _service.UpdateCustomerAsync(id, saveCustomerDTO);

            return(customer);
        }
Exemplo n.º 4
0
        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 }));
        }