public ActionResult AssemblePackage(int packageId)
        {
            var request = new AssemblePackageRequest { PackageId = packageId };
            var response = this.packagesService.AssemblePackage(request);

            var jsonNetResult = new JsonNetResult
            {
                Formatting = (Formatting)Newtonsoft.Json.Formatting.Indented,
                Data = response.ConvertToPackageViewModel()
            };
            return jsonNetResult;
        }
        /// <summary>
        /// The assemble package.
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <returns>
        /// The <see cref="AssemblePackageResponse"/>.
        /// </returns>
        public AssemblePackageResponse AssemblePackage(AssemblePackageRequest request)
        {
            try
            {
                var package = this.packageRepository.GetPackageById(request.PackageId);
                package.ChangePackageStatus(PackageStatus.Assembling);
                this.packageRepository.UpdatePackage(package);

                if (package.User.Activated)
                {
                    var profile = package.User.Profile;
                    var body = string.Format(
                        profile.GetEmailResourceString("PackageStatusChangedBody"),
                        package.Name,
                        package.Id,
                        profile.GetTranslatedPackageStatus("New"),
                        profile.GetTranslatedPackageStatus("Assembling"),
                        profile.GetFullName());
                    this.emailService.SendMail(
                        EmailResources.EmailActivationFrom,
                        package.User.Email,
                        profile.GetEmailResourceString("PackageStatusChangedSubject"),
                        body);
                }

                var response = package.ConvertToAssemblePackageResponse();
                response.MessageType = MessageType.Success;
                response.Message = string.Format(PackageStatusResources.StatusChanged, PackageStatus.Assembling);
                return response;
            }
            catch (Exception ex)
            {
                this.Logger.Log(ex.Message);
                return new AssemblePackageResponse { MessageType = MessageType.Error, Message = ex.Message };
            }
        }