public async Task <CreateProjectionResultModel> DeleteProjection(Guid id) { var existingProjections = _projectionsRepository.GetProjectionById(id); var ticketsInProjection = _ticketRepository.GetAllForSpecificProjection(id); if (existingProjections == null) { CreateProjectionResultModel errorModel = new CreateProjectionResultModel { ErrorMessage = Messages.PROJECTION_IN_FUTURE, IsSuccessful = true }; return(errorModel); } if (existingProjections.DateTime > DateTime.Now) { CreateProjectionResultModel errorModel = new CreateProjectionResultModel { ErrorMessage = Messages.PROJECTION_IN_FUTURE, IsSuccessful = false, Projection = new ProjectionDomainModel { AuditoriumId = existingProjections.AuditoriumId, Id = existingProjections.Id, MovieId = existingProjections.MovieId, AuditoriumName = existingProjections.Auditorium.Name, MovieTitle = existingProjections.Movie.Title, ProjectionTime = existingProjections.DateTime } }; return(errorModel); } foreach (var ticket in ticketsInProjection) { _ticketRepository.Delete(ticket.Id); } _projectionsRepository.Delete(id); _projectionsRepository.Save(); CreateProjectionResultModel domainModel = new CreateProjectionResultModel { ErrorMessage = null, IsSuccessful = true, Projection = new ProjectionDomainModel { AuditoriumName = existingProjections.Auditorium.Name, AuditoriumId = existingProjections.AuditoriumId, Id = existingProjections.Id, MovieId = existingProjections.MovieId, MovieTitle = existingProjections.Movie.Title } }; return(domainModel); }
public async Task <CreateProjectionResultModel> CreateProjection(ProjectionDomainModel domainModel) { int projectionTime = 3; var projectionsAtSameTime = _projectionsRepository.GetByAuditoriumId(domainModel.AuditoriumId) .Where(x => x.DateTime <domainModel.ProjectionTime.AddHours(projectionTime) && x.DateTime> domainModel.ProjectionTime.AddHours(-projectionTime)) .ToList(); if (projectionsAtSameTime != null && projectionsAtSameTime.Count > 0) { return(new CreateProjectionResultModel { IsSuccessful = false, ErrorMessage = Messages.PROJECTIONS_AT_SAME_TIME }); } var newProjection = new Data.Projection { MovieId = domainModel.MovieId, AuditoriumId = domainModel.AuditoriumId, DateTime = domainModel.ProjectionTime }; var insertedProjection = _projectionsRepository.Insert(newProjection); if (insertedProjection == null) { return(new CreateProjectionResultModel { IsSuccessful = false, ErrorMessage = Messages.PROJECTION_CREATION_ERROR }); } _projectionsRepository.Save(); var projekcija = await _projectionsRepository.GetByIdAsync(insertedProjection.Id); CreateProjectionResultModel result = new CreateProjectionResultModel { IsSuccessful = true, ErrorMessage = null, Projection = new ProjectionDomainModel { Id = insertedProjection.Id, AuditoriumId = insertedProjection.AuditoriumId, MovieId = insertedProjection.MovieId, ProjectionTime = insertedProjection.DateTime, AuditoriumName = projekcija.Auditorium.AuditName, MovieTitle = projekcija.Movie.Title } }; return(result); }
public void PostAsync_Create_createProjectionResultModel_IsSuccessful_False_Return_BadRequest() { //Arrange string expectedMessage = "Error occured while creating new projection, please try again."; int expectedStatusCode = 400; CreateProjectionModel createProjectionModel = new CreateProjectionModel() { MovieId = Guid.NewGuid(), ProjectionTime = DateTime.Now.AddDays(1), AuditoriumId = 1 }; CreateProjectionResultModel createProjectionResultModel = new CreateProjectionResultModel { Projection = new ProjectionDomainModel { Id = Guid.NewGuid(), AuditoriumName = "ImeSale", AuditoriumId = createProjectionModel.AuditoriumId, MovieId = createProjectionModel.MovieId, MovieTitle = "ImeFilma", ProjectionTime = createProjectionModel.ProjectionTime }, IsSuccessful = false, ErrorMessage = Messages.PROJECTION_CREATION_ERROR, }; Task <CreateProjectionResultModel> responseTask = Task.FromResult(createProjectionResultModel); _projectionService = new Mock <IProjectionService>(); _projectionService.Setup(x => x.CreateProjection(It.IsAny <ProjectionDomainModel>())).Returns(responseTask); ProjectionsController projectionsController = new ProjectionsController(_projectionService.Object); //Act var result = projectionsController.PostAsync(createProjectionModel).ConfigureAwait(false).GetAwaiter().GetResult().Result; var resultResponse = (BadRequestObjectResult)result; var badObjectResult = ((BadRequestObjectResult)result).Value; var errorResult = (ErrorResponseModel)badObjectResult; //Assert Assert.IsNotNull(resultResponse); Assert.AreEqual(expectedMessage, errorResult.ErrorMessage); Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult)); Assert.AreEqual(expectedStatusCode, resultResponse.StatusCode); }
public void PostAsync_Create_Throw_DbException_Projection() { //Arrange string expectedMessage = "Inner exception error message."; int expectedStatusCode = 400; CreateProjectionModel createProjectionModel = new CreateProjectionModel() { MovieId = Guid.NewGuid(), ProjectionTime = DateTime.Now.AddDays(1), AuditoriumId = 1 }; CreateProjectionResultModel createProjectionResultModel = new CreateProjectionResultModel { Projection = new ProjectionDomainModel { Id = Guid.NewGuid(), AuditoriumName = "ImeSale", AuditoriumId = createProjectionModel.AuditoriumId, MovieId = createProjectionModel.MovieId, MovieTitle = "ImeFilma", ProjectionTime = createProjectionModel.ProjectionTime }, IsSuccessful = true }; Task <CreateProjectionResultModel> responseTask = Task.FromResult(createProjectionResultModel); Exception exception = new Exception("Inner exception error message."); DbUpdateException dbUpdateException = new DbUpdateException("Error.", exception); _projectionService = new Mock <IProjectionService>(); _projectionService.Setup(x => x.CreateProjection(It.IsAny <ProjectionDomainModel>())).Throws(dbUpdateException); ProjectionsController projectionsController = new ProjectionsController(_projectionService.Object); //Act var result = projectionsController.PostAsync(createProjectionModel).ConfigureAwait(false).GetAwaiter().GetResult().Result; var resultResponse = (BadRequestObjectResult)result; var badObjectResult = ((BadRequestObjectResult)result).Value; var errorResult = (ErrorResponseModel)badObjectResult; //Assert Assert.IsNotNull(resultResponse); Assert.AreEqual(expectedMessage, errorResult.ErrorMessage); Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult)); Assert.AreEqual(expectedStatusCode, resultResponse.StatusCode); }
public void PostAsync_Create_createProjectionResultModel_IsSuccessful_True_Projection() { //Arrange int expectedStatusCode = 201; CreateProjectionModel createProjectionModel = new CreateProjectionModel() { MovieId = Guid.NewGuid(), ProjectionTime = DateTime.Now.AddDays(1), AuditoriumId = 1 }; CreateProjectionResultModel createProjectionResultModel = new CreateProjectionResultModel { Projection = new ProjectionDomainModel { Id = Guid.NewGuid(), AuditoriumName = "ImeSale", AuditoriumId = createProjectionModel.AuditoriumId, MovieId = createProjectionModel.MovieId, MovieTitle = "ImeFilma", ProjectionTime = createProjectionModel.ProjectionTime }, IsSuccessful = true }; Task <CreateProjectionResultModel> responseTask = Task.FromResult(createProjectionResultModel); _projectionService = new Mock <IProjectionService>(); _projectionService.Setup(x => x.CreateProjection(It.IsAny <ProjectionDomainModel>())).Returns(responseTask); ProjectionsController projectionsController = new ProjectionsController(_projectionService.Object); //Act var result = projectionsController.PostAsync(createProjectionModel).ConfigureAwait(false).GetAwaiter().GetResult().Result; var createdResult = ((CreatedResult)result).Value; var projectionDomainModel = (ProjectionDomainModel)createdResult; //Assert Assert.IsNotNull(projectionDomainModel); Assert.AreEqual(createProjectionModel.MovieId, projectionDomainModel.MovieId); Assert.IsInstanceOfType(result, typeof(CreatedResult)); Assert.AreEqual(expectedStatusCode, ((CreatedResult)result).StatusCode); }