public async Task <ApiResponse <string> > RemoveOrder(int orderId, int customerId) { //Cancel Order: set order status to cancelled, pop order from corresponding queue. ApiResponse <string> result = new ApiResponse <string>(); try { var order = await unitOfWork.OrdersManager.GetAsync(b => b.Id == orderId, 0, 0, null, includeProperties : "OrderServices"); Order OrderToUpdate = order.FirstOrDefault(); if (OrderToUpdate != null) { var barberQueue = await unitOfWork.BarbersQueuesManager.GetAsync(b => b.Id == OrderToUpdate.BarberQueueId, 0, 0, null, includeProperties : "Orders"); if (barberQueue != null) { BarberQueue QueueToUpdate = barberQueue.FirstOrDefault(); for (int i = 0; i < QueueToUpdate.Orders.Count; i++) { if (QueueToUpdate.Orders[i].Id == orderId) { QueueToUpdate.Orders.Remove(QueueToUpdate.Orders[i]); } } if (QueueToUpdate.Orders.Count == 0) { QueueToUpdate.QueueStatus = "idle"; QueueToUpdate.QueueWaitingTime = 0; } var queueUpdateRes = await unitOfWork.BarbersQueuesManager.UpdateAsync(QueueToUpdate); if (queueUpdateRes) { var queueAdjustmentRes = await SetQueueWaitingTimes(); await unitOfWork.SaveChangesAsync(); if (queueAdjustmentRes.Succeeded) { result.Data = "Order cancelled successfully."; result.Succeeded = true; return(result); } else { result.Errors.Add("Error adjusting queue times"); result.Succeeded = false; return(result); } } else { result.Errors.Add("Error updating barber queue !"); result.Succeeded = false; return(result); } } else { result.Data = "Error"; result.Errors.Add("Failed to fetch barber Queue !"); return(result); } } else { result.Data = "Error."; result.Errors.Add("Error fetching customer details !"); result.Succeeded = false; return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }
public async Task <ApiResponse <BarberDTO> > CreateBarber(CreateBarberDTO model) { ApiResponse <BarberDTO> result = new ApiResponse <BarberDTO>(); try { var barberPrintResult = await unitOfWork.BarbersManager.GetAsync(a => a.BarberFingerPrintId == model.BarberFingerprintId); var barber = barberPrintResult.FirstOrDefault(); if (barber == null) { var shops = await unitOfWork.ShopsManager.GetAsync(); Shop shop = shops.FirstOrDefault(); Barber barberToAdd = new Barber(); barberToAdd.NameAR = model.NameAR; barberToAdd.NameEN = model.NameEN; barberToAdd.ShopId = shop.Id; barberToAdd.NumberOfCustomersHandled = 0; barberToAdd.BarberFingerPrintId = model.BarberFingerprintId; barberToAdd.Status = "Unavailable"; var barberResult = await unitOfWork.BarbersManager.CreateAsync(barberToAdd); await unitOfWork.SaveChangesAsync(); if (barberResult != null) { BarberProfilePhoto barberProfilePhoto = new BarberProfilePhoto(); barberProfilePhoto.BarberId = barberResult.Id; barberProfilePhoto.AdminPath = model.BarberProfilePhotoPathAdmin; barberProfilePhoto.UserPath = model.BarberProfilePhotoPathUser; var barberProfilePhotoResult = await unitOfWork.BarberProfilePhotosManager.CreateAsync(barberProfilePhoto); await unitOfWork.SaveChangesAsync(); if (barberProfilePhotoResult != null) { BarberQueue barberQueue = new BarberQueue(); barberQueue.BarberId = barberResult.Id; barberQueue.QueueStatus = "idle"; barberQueue.QueueWaitingTime = 0; var barberQueueResult = await unitOfWork.BarbersQueuesManager.CreateAsync(barberQueue); await unitOfWork.SaveChangesAsync(); if (barberQueueResult != null) { var barbers = await unitOfWork.BarbersManager.GetAsync(b => b.Id == barberResult.Id, includeProperties : "BarberQueue,BarberProfilePhoto"); Barber barberToReturn = barbers.FirstOrDefault(); if (barberToReturn != null) { result.Succeeded = true; result.Data = mapper.Map <BarberDTO>(barberToReturn); result.Errors.Add("Failed to create barber !"); return(result); } else { result.Succeeded = false; result.Errors.Add("Error creating barber !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("Error creating barber queue !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("Failed to create barber profile photo !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("A barber already exists with the specified finger print id !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("Failed to create barber !"); return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }