예제 #1
0
        public async Task <IActionResult> AddEditTutor(TutorDto model)
        {
            using (var txscope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                try
                {
                    if (!ModelState.IsValid)
                    {
                        txscope.Dispose();
                        ErrorLog.AddErrorLog(new Exception("ModelStateIsValid"), "CreateTutor");
                        return(RedirectToAction(@"Components/_AddEditTutor", model.Id));
                    }

                    if (model.Id == 0)
                    {
                        if (!string.IsNullOrEmpty(model.UserName))
                        {
                            bool userExist = UserNameExists(model.UserName);
                            if (userExist == true)
                            {
                                txscope.Dispose();
                                return(JsonResponse.GenerateJsonResult(3, ResponseConstants.TutorUserExist));
                            }
                        }
                        if (!string.IsNullOrEmpty(model.MobileNo))
                        {
                            bool mobileNoExist = MobileNoExists(model.MobileNo);
                            if (mobileNoExist == true)
                            {
                                txscope.Dispose();
                                return(JsonResponse.GenerateJsonResult(3, ResponseConstants.MobileNoExist));
                            }
                        }
                        //Created by company Tutor
                        ApplicationUser tutorUser = new ApplicationUser();
                        tutorUser.UserName     = model.UserName;
                        tutorUser.MobileNumber = model.MobileNo;
                        tutorUser.IsActive     = true;
                        var createStudentUser = await _userManager.CreateAsync(tutorUser, model.TutorPassword);

                        if (createStudentUser.Succeeded)
                        {
                            var isRoleAssined = await _userManager.AddToRoleAsync(tutorUser, UserRoles.Tutor);

                            var tutorObj = Mapper.Map <Tutors>(model);
                            tutorObj.CreatedDate = model.DateofEmployeement;
                            tutorObj.IsActive    = true;
                            tutorObj.UserId      = tutorUser.Id;
                            var result = await _tutorService.InsertAsync(tutorObj, Accessor, User.GetUserId());

                            if (result != null)
                            {
                                List <long> lessonIds = JsonConvert.DeserializeObject <List <long> >(model.RelevantLesson);
                                // string[] lessonIds = model.RelevantLesson.Split(",");
                                foreach (var lesson in lessonIds)
                                {
                                    var relevantLessonData = new RelevantLessonDto()
                                    {
                                        TutorId  = result.Id,
                                        LessonId = lesson
                                    };
                                    var relevantLessonObj    = Mapper.Map <TutorRelevantLesson>(relevantLessonData);
                                    var relevantLessonResult = await _relevantLessonService.InsertAsync(relevantLessonObj, Accessor, User.GetUserId());
                                }

                                //Staff Log
                                if (User.IsInRole(UserRoles.Staff))
                                {
                                    await _staffLog.InsertAsync(new Log { CreatedDate = DateTime.UtcNow, StaffId = User.GetUserId(), Description = ResponseConstants.CreateNewTutor }, Accessor, User.GetUserId());
                                }
                                txscope.Complete();
                                return(JsonResponse.GenerateJsonResult(1, ResponseConstants.CreateNewTutor));
                            }
                        }
                    }

                    else if (model != null)
                    {
                        var result = await _tutorService.GetSingleAsync(x => x.Id == model.Id);

                        result.TutorName = model.TutorName;
                        await _tutorService.UpdateAsync(result, Accessor, User.GetUserId());

                        var tutorUserObj = await _userService.GetSingleAsync(x => x.Id == model.Id);

                        tutorUserObj.UserName     = model.UserName;
                        tutorUserObj.MobileNumber = model.MobileNo;
                        await _userService.UpdateAsync(tutorUserObj, Accessor, User.GetUserId());

                        string[] lessonIds     = model.RelevantLesson.Split(",");
                        var      relevantTutor = _relevantLessonService.GetAll().Where(x => x.TutorId == model.Id).ToList();
                        foreach (var item in relevantTutor)
                        {
                            await _relevantLessonService.DeleteAsync(item, Accessor, User.GetUserId());
                        }
                        foreach (string lesson in lessonIds)
                        {
                            var relevantLessonData = new RelevantLessonDto()
                            {
                                TutorId  = result.Id,
                                LessonId = Convert.ToInt64(lesson)
                            };
                            var relevantLessonObj    = Mapper.Map <TutorRelevantLesson>(relevantLessonData);
                            var relevantLessonResult = await _relevantLessonService.InsertAsync(relevantLessonObj, Accessor, User.GetUserId());
                        }
                        //Staff Log
                        if (User.IsInRole(UserRoles.Staff))
                        {
                            await _staffLog.InsertAsync(new Log { CreatedDate = DateTime.UtcNow, StaffId = User.GetUserId(), Description = ResponseConstants.UpdateTutor }, Accessor, User.GetUserId());
                        }

                        txscope.Complete();
                        return(JsonResponse.GenerateJsonResult(1, ResponseConstants.UpdateTutor));
                    }
                    else
                    {
                        txscope.Dispose();
                        return(JsonResponse.GenerateJsonResult(0, ResponseConstants.SomethingWrong));
                    }

                    txscope.Dispose();
                    return(JsonResponse.GenerateJsonResult(0, ResponseConstants.SomethingWrong));
                }
                catch (Exception ex)
                {
                    txscope.Dispose();
                    ErrorLog.AddErrorLog(ex, "CreateTutor");
                    return(JsonResponse.GenerateJsonResult(0, ResponseConstants.SomethingWrong));
                }
            }
        }