Exemplo n.º 1
0
 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()));
            }
        }
Exemplo n.º 3
0
        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
            {
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 7
0
        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));
        }