public ApiResult <Package> CreatePackage(CreatePackageOptions options) { if (options == null) { return(ApiResult <Package> .Failed(StatusCode.BadRequest, "Null options")); } if (options.ProjectId == null) { return(ApiResult <Package> .Failed(StatusCode.BadRequest, "The Project Id is empty")); } if (options.Reward == null || options.Reward.Value <= 0) { return(ApiResult <Package> .Failed(StatusCode.BadRequest, "Package reward is not valid")); } var project = context_ .Set <Project>() .Where(p => p.ProjectId == options.ProjectId) .Include(x => x.Packages) .SingleOrDefault(); foreach (var item in project.Packages) { if (item.Description == options.Description && item.Reward == options.Reward) { return(ApiResult <Package> .Failed(StatusCode.BadRequest, "Package with the same options already exists")); } } var package = new Package() { Description = options.Description, Reward = options.Reward.Value, IsActive = true }; project.Packages.Add(package); context_.Update(project); context_.Add(package); try { var rows = context_.SaveChanges(); if (rows <= 0) { return(ApiResult <Package> .Failed( StatusCode.InternalServerError, "Package could not be created")); } } catch (Exception ex) { return(ApiResult <Package> .Failed(StatusCode.InternalServerError, ex.ToString())); } return(ApiResult <Package> .Successful(package)); }
public IActionResult Create([FromBody] CreatePackageOptions options) { var result = packageService.CreatePackage(options); if (!result.Success) { return(StatusCode((int)result.ErrorCode, result.ErrorText)); } return(Ok()); }
public IActionResult Create([FromBody] CreatePackageOptions options) { var pack = packageService_.CreatePackage(options); if (!pack.Success) { return(StatusCode((int)pack.ErrorCode, pack.ErrorText)); } return(Json(pack)); }
public Result <Package> CreatePackage(CreatePackageOptions options) { if (options == null) { return(Result <Package> .CreateFailed(StatusCode.BadRequest, "Null options")); } var project = projectService.SearchProject(new SearchProjectOptions() { ProjectId = options.ProjectId }).SingleOrDefault(); if (project == null) { return(Result <Package> .CreateFailed(StatusCode.BadRequest, $"The ProjectId {options.ProjectId} does not exist")); } var package = new Package(); if (!string.IsNullOrWhiteSpace(options.Description)) { package.Description = options.Description; } else { return(Result <Package> .CreateFailed(StatusCode.BadRequest, $"Package description is empty")); } if (options.Price > 0M) { package.Price = (decimal)options.Price; } else { return(Result <Package> .CreateFailed(StatusCode.BadRequest, $"Price is not valid")); } project.Packages.Add(package); try { if (dbContext.SaveChanges() > 0) { return(Result <Package> .CreateSuccessful(package)); } else { return(Result <Package> .CreateFailed(StatusCode.InternalServerError, "Package could not be created")); } } catch (Exception ex) { return(Result <Package> .CreateFailed(StatusCode.InternalServerError, ex.ToString())); } }