public async Task <IServiceResponse <bool> > UpdateComplaint(int id, ComplaintDTO complaintDTO) { return(await HandleApiOperationAsync(async() => { await _feedbackService.UpdateComplaint(id, complaintDTO); return new ServiceResponse <bool>(true); })); }
public async Task <IActionResult> PostAsync([FromBody] ComplaintDTO value) { var now = DateTime.Now; try { var fillTask = FillComplaint(value); var existingTask = ComplaintRepository.Find(value.SubmittedDate, value.ComplaintDetails); var complaint = await fillTask; var existing = await existingTask; complaint.Key = existing?.Key ?? 0; complaint.FirstSeen = existing != null && existing.FirstSeen != DateTime.MinValue ? existing.FirstSeen : now; complaint.LastSeen = now; var upsertTask = existing == null?ComplaintRepository.Add(complaint) : ComplaintRepository.Update(complaint); return(Ok(Mapper.Map <ComplaintDTO>(await upsertTask))); } catch (Exception e) { Logger.LogError("Error adding complaint:\n{message}", e.Message); return(BadRequest(e.ToString())); } }
public async Task UpdateComplaint(int id, ComplaintDTO complaintDTO) { var complaint = await _complaintRepo.GetAsync(id); if (complaint == null) { throw await _serviceHelper.GetExceptionAsync(ErrorConstants.NULL_ENTRY_REJECTED); } var complaintss = _complaintRepo.GetAll().Where(a => a.Id == id); complaintss.FirstOrDefault().RepliedMessage = complaintDTO.RepliedMessage; complaintss.FirstOrDefault().Responded = true; await _unitOfWork.SaveChangesAsync(); try { string countMessage = "Dear Valued Customer <strong>" + complaint.FullName + " </strong>, <br><br>This is to notify you that we received your email" + "<br> <br> Aplogies for the delay.<br> <br>" + complaintDTO.RepliedMessage + " <br> <br> Regards"; var mail = new Mail(appConfig.AppEmail, "Complaint ", complaint.Email) { Body = countMessage }; await _mailSvc.SendMailAsync(mail); } catch { } }
public async Task <IServiceResponse <bool> > AddComplaint(ComplaintDTO fare) { return(await HandleApiOperationAsync(async() => { await _feedbackService.AddComplaint(fare); return new ServiceResponse <bool>(true); })); }
private async Task <Complaint> FillComplaint(ComplaintDTO value) { var complaint = Mapper.Map <Complaint>(value); var calendarTask = CalendarRepository.Find(value.SubmittedDate); var companyTask = CompanyRepository.Find(value.CompanyName); var vehicleTask = !string.IsNullOrEmpty(value.VehicleName) ? VehicleRepository.Find(value.VehicleName) : Task.FromResult <Vehicle>(null); complaint.SubmittedDateKey = (await calendarTask).Key; complaint.CompanyKey = (await companyTask).Key; var vehicle = !string.IsNullOrEmpty(value.VehicleName) ? await vehicleTask ?? await VehicleRepository.Add(new Vehicle { Name = value.VehicleName }) : null; complaint.VehicleKey = vehicle?.Key; return(complaint); }
public async void ShouldAddComplaint() { //Given var now = DateTime.Now; var calendar = await CalendarRepository.Add(Calendars[0].Date); await CompanyRepository.Add(Companies[0], true); await TripRepository.Add(Trips[0]); await VehicleRepository.Add(Vehicles[0], true); var status = await StatusRepository.Add(new Status { Name = "Open" }, true); var location = new Point(new Coordinate(-122.3456, 45.67890)); var complaintDTO = new ComplaintDTO { SubmittedDate = Calendars[0].Date + now.TimeOfDay, Location = location.ToGeoJson <GeoJSON.Net.Geometry.Point>(), CompanyName = Companies[0].Name, VehicleName = Vehicles[0].Name, VehicleTypeKey = 1, ComplaintTypeKey = 8, ComplaintDetails = "Vehicle component issue", Complaints = new string[] { } }; //When var result = await Controller.PostAsync(complaintDTO); var dbCollision = await ComplaintRepository.Find(1); //Then var viewResult = Assert.IsType <OkObjectResult>(result); var model = Assert.IsType <ComplaintDTO>(viewResult.Value); Assert.NotNull(model); Assert.Equal(complaintDTO.SubmittedDate, model.SubmittedDate); Assert.True(dbCollision.FirstSeen == dbCollision.LastSeen); }
public Task AddComplaint(ComplaintDTO complaintDTO) { DateTime dateTime = DateTime.Now; var complaint = new Complaint { BookingReference = complaintDTO.BookingReference, ComplaintType = complaintDTO.ComplaintType, Email = complaintDTO.Email, FullName = complaintDTO.FullName, Message = complaintDTO.Message, PriorityLevel = complaintDTO.PriorityLevel, CreationTime = dateTime }; var newlyInserted = _complaintRepo.InsertAndGetId(complaint); if (newlyInserted <= 0) { throw new Exception("Could not insert new record"); } return(Task.FromResult(newlyInserted)); }