public async Task UploadFileAsync(Controller controller, HttpPostedFileBase file, int assignmentId, string studentId)
        {
            SubmissionDTO submission = await service.GetByCompositeKeysAsync(assignmentId, studentId);

            if (submission == null)
            {
                throw new Exception();
            }
            if (file != null && file.ContentLength > 0)
            {
                try
                {
                    if (submission.Completed)
                    {
                        controller.ViewBag.FileStatus = "This assignment is already complete!You cannot updload a file to this assignment.";
                        return;
                    }

                    SubmitFileDTOBuilderData builderData   = new SubmitFileDTOBuilderData(file);
                    SubmitFileDTO            newSubmitFile = dtoFactory.CreateDTO <SubmitFileDTOBuilderData, SubmitFileDTO>(builderData);

                    string path = Path.Combine(controller.Server.MapPath("~/Files/Assignments"), newSubmitFile.FileGuid);
                    file.SaveAs(path);

                    service.DeleteFileFromFSandDBIfExists(submission.SubmitFile);

                    submission.SubmitFile = newSubmitFile;
                    submission.Submitted  = DateTime.Now;

                    await service.SaveChangesAsync();
                }
                catch (Exception)
                {
                    controller.ViewBag.FileStatus = "Error while file uploading.";
                }
            }
            else
            {
                controller.ModelState.AddModelError("", "Upload file is not selected!");
            }
            return;
        }