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());
        }
Exemple #3
0
        public IActionResult Create([FromBody] CreatePackageOptions options)
        {
            var pack = packageService_.CreatePackage(options);

            if (!pack.Success)
            {
                return(StatusCode((int)pack.ErrorCode, pack.ErrorText));
            }

            return(Json(pack));
        }
Exemple #4
0
        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()));
            }
        }