public void Create(EducationSecurityPrincipal user, ServiceRequestModel viewModel)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            IPermission permission = PermissionFactory.Current.Create("CreateServiceRequest", StudentRepository.Items.Include(s => s.School.UserRoles).Where(s => viewModel.StudentIds.Contains(s.Id)));

            permission.GrantAccess(user);
            List <int> studentIds = viewModel.StudentIds.ToList();

            foreach (int studentId in studentIds)
            {
                ServiceRequest request = new ServiceRequest();
                viewModel.CopyTo(request);
                request.StudentId      = studentId;
                request.CreatingUser   = user.Identity.User;
                request.CreatingUserId = user.Identity.User.Id;
                CreateFulfillmentDetail(request, user, viewModel);
                ServiceRequestRepository.Add(request);
            }
            RepositoryContainer.Save();
        }
        public IHttpActionResult Save(ServiceRequestModel Model)
        {
            ServiceRequest SR = new ServiceRequest();

            SR.Id = Model.Id;
            SR.InsuranceTypeId      = Model.InsuranceTypeId;
            SR.Code                 = Model.Code;
            SR.UserId               = Model.UserId;
            SR.TimeOccured          = DateTime.Now.ToUniversalTime();
            SR.ClaimType            = Model.ClaimType;
            SR.UsageType            = Model.UsageType;
            SR.RegistrationCategory = Model.RegistrationCategory;
            SR.VehicleNo            = Model.VehicleNo;
            SR.VehicleValue         = Model.VehicleValue;
            SR.VehicleYear          = Model.VehicleYear;
            SR.IsFinanced           = Model.IsFinanced;
            SR.Location             = Model.Location;
            SR.ClientType           = Model.ClientType;
            SR.FuelType             = Model.FuelType;
            //SR.Images = Model.Images;

            try
            {
                using (AppDBContext context = new AppDBContext())
                {
                    var repo = new ServiceRequestRepository(context);
                    if (SR.Id == 0)
                    {
                        SR.Id = repo.Add(SR);
                        AssignRequestToAgents(SR.Id);

                        //Added temporary
                        Utility.SendEmail("Request " + SR.Code + " Raised", SR.Code);
                    }
                    else
                    {
                        repo.Update(SR);
                    }

                    if (SR.Images != null)
                    {
                        var imageRepo = new VehicleImageRepository(context);
                        imageRepo.Update(SR.Id, SR.Images);
                    }
                }

                return(Json(SR));
            }
            catch (Exception ex)
            {
                Logger.Log(typeof(ServiceRequestController), ex.Message + ex.StackTrace, LogType.ERROR);
                return(InternalServerError());
            }
        }