/// <summary>
        ///    Upload file
        /// </summary>
        /// <param name="aResume">Resume</param>
        /// <returns>True if file has been successfully uploaded, false otherwise</returns>
        public async Task <bool> UploadFileAsync(SpontaneousResume aResume)
        {
            _hrEntities.SpontaneousResumes.Add(aResume);
            var affected = await _hrEntities.SaveChangesAsync().ConfigureAwait(false);

            return(affected > 0);
        }
        public async Task <IHttpActionResult> PostAsync(MimeTypeId mimeId)
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(BadRequest(Resources.UploadingNotSupported));
            }

            var context = HttpContext.Current;

            #region Checking the upload limit

            var sessionId   = context.GetSessionId();
            var uploadCount =
                await _resumeManagerRepository.GetUploadedCountAsync(sessionId, mimeId).ConfigureAwait(false);

            if (uploadCount >= mimeId.GetUploadLimit())
            {
                return(BadRequest(string.Format(Resources.ExceededUploadedLimit, mimeId)));
            }

            #endregion

            var provider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider).ConfigureAwait(false);

            foreach (var content in provider.Contents)
            {
                #region Checking media types

                var headers            = content.Headers;
                var mediaType          = headers.ContentType.MediaType;
                var contentLength      = headers.ContentLength;
                var availableMimeTypes = mimeId.GetMimeTypes();
                if (availableMimeTypes.All(availableMimeType => availableMimeType != mediaType))
                {
                    return(BadRequest(string.Format(Resources.WrongMimeType, mediaType)));
                }

                #endregion

                var fileName  = headers.ContentDisposition.FileName.Trim('\"');
                var fileBytes = await content.ReadAsByteArrayAsync().ConfigureAwait(false);

                var newResume = new SpontaneousResume
                {
                    SessionId = sessionId,
                    File      = fileBytes,
                    FileName  = fileName,
                    FileType  = mimeId.ToString(),
                    FileSize  = contentLength ?? default(decimal)
                };
                if (!await _resumeManagerRepository.UploadFileAsync(newResume).ConfigureAwait(false))
                {
                    return(BadRequest(string.Format(Resources.FileExists, fileName)));
                }
            }

            return(Ok(Resources.FileUploaded));
        }