Ejemplo n.º 1
0
        public async Task <ActionResult> CreateSiwesCoordinator([FromForm] SiwesCoordinatorRequest siwesCoordinatorRequest)
        {
            var result = await _siwesCoRepository.CreateSiwesCo(siwesCoordinatorRequest);

            if (result.StatusCode == Helpers.Success)
            {
                return(StatusCode(StatusCodes.Status200OK, result));
            }
            else
            {
                return(StatusCode(StatusCodes.Status400BadRequest, result));
            }
        }
Ejemplo n.º 2
0
        public async Task <ToRespond> UpdateSiwesCo(int siwesCoId, SiwesCoordinatorRequest siwesCoordinatorRequest)
        {
            var siwesCo = await _dataContext.SiwesCoordinators.FindAsync(siwesCoId);

            if (siwesCo == null)
            {
                return(new ToRespond
                {
                    StatusCode = Helpers.NotFound,
                    StatusMessage = Helpers.StatusMessageNotFound
                });
            }
            if (siwesCoordinatorRequest == null)
            {
                return(new ToRespond
                {
                    StatusCode = Helpers.ObjectNull,
                    StatusMessage = Helpers.StatusMessageObjectNull
                });
            }

            siwesCo.EmailAddress = siwesCoordinatorRequest.EmailAddress;
            siwesCo.FirstName    = siwesCoordinatorRequest.FirstName;
            siwesCo.LastName     = siwesCoordinatorRequest.LastName;
            siwesCo.PhoneNumber  = siwesCoordinatorRequest.PhoneNumber;
            siwesCo.Department   = siwesCoordinatorRequest.Department;

            if (siwesCoordinatorRequest.PictureUrl != null)
            {
                var resultImage = _cloudinaryRepository.UploadFileToCloudinary(siwesCoordinatorRequest.PictureUrl);
                var image       = (RawUploadResult)resultImage.ObjectValue;
                siwesCo.PictureUrl = image.Uri.ToString();
            }

            //var dbTransaction = await _dataContext.Database.BeginTransactionAsync();
            _globalRepository.Update(siwesCo);
            var result = await _globalRepository.SaveAll();

            if (result != null)
            {
                if (!result.Value)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.SaveError,
                        StatusMessage = Helpers.StatusMessageSaveError
                    });
                }
                //await dbTransaction.CommitAsync();
                return(new ToRespond()
                {
                    StatusCode = Helpers.Success,
                    ObjectValue = _mapper.Map <SiwesCoordinatorResponse>(siwesCo),
                    StatusMessage = "SiwesCo Updated Successfully!!!"
                });
            }

            return(new ToRespond()
            {
                StatusCode = Helpers.SaveError,
                StatusMessage = "Can not update SiwesCo"
            });
        }
Ejemplo n.º 3
0
        public async Task <ToRespond> CreateSiwesCo(SiwesCoordinatorRequest siwesCoordinatorRequest)
        {
            if (siwesCoordinatorRequest == null)
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectNull,
                    StatusMessage = Helpers.StatusMessageObjectNull
                });
            }

            if (await SiwesCoordinatorExists(siwesCoordinatorRequest.EmailAddress))
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectExists,
                    StatusMessage = Helpers.StatusMessageObjectExists
                });
            }

            var siwesCoordinator = new SiwesCoordinator
            {
                EmailAddress = siwesCoordinatorRequest.EmailAddress,
                FirstName    = siwesCoordinatorRequest.FirstName,
                LastName     = siwesCoordinatorRequest.LastName,
                PhoneNumber  = siwesCoordinatorRequest.PhoneNumber,
                Department   = siwesCoordinatorRequest.Department,
            };

            if (siwesCoordinatorRequest.PictureUrl != null)
            {
                var result = _cloudinaryRepository.UploadFileToCloudinary(siwesCoordinatorRequest.PictureUrl);
                var image  = (RawUploadResult)result.ObjectValue;
                siwesCoordinator.PictureUrl = image.Uri.ToString();
            }

            var dbTransaction = await _dataContext.Database.BeginTransactionAsync();

            _globalRepository.Add(siwesCoordinator);
            var saveVal = await _globalRepository.SaveAll();

            if (saveVal != null)
            {
                if (!saveVal.Value)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.SaveNoRowAffected,
                        StatusMessage = "Can Not Save"
                    });
                }
                var user = new User
                {
                    UserName   = siwesCoordinatorRequest.EmailAddress,
                    Email      = siwesCoordinatorRequest.EmailAddress,
                    UserTypeId = siwesCoordinator.SiwesCoordinatorId,
                    UserType   = Helpers.SiwesCoordinator
                };

                var password = (new Generate()).RandomPassword();

                var result = await _userManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    //ASSIGN STUDENT ROLE TO USER (Student)
                    string SiwesCoordinatorTypeRole = Helpers.SiwesCoordinatorRole;


                    var assignmentResult = await _userManager.AddToRoleAsync(user, SiwesCoordinatorTypeRole);

                    if (assignmentResult.Succeeded)
                    {
                        //THEN UPDATE Student TABLE USERID COLUMN WITH NEWLY CREATED USER ID
                        siwesCoordinator.UserId = user.Id;
                        var SiwesCoordinatorUpdateResult = _globalRepository.Update(siwesCoordinator);
                        if (!SiwesCoordinatorUpdateResult)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.NotSucceeded,
                                StatusMessage = "Not Suceeded"
                            });
                        }

                        var SiwesCoordinatorUpdateSaveResult = await _globalRepository.SaveAll();

                        if (!SiwesCoordinatorUpdateSaveResult.HasValue)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.SaveError,
                                StatusMessage = Helpers.StatusMessageSaveError
                            });
                        }

                        if (!SiwesCoordinatorUpdateSaveResult.Value)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.SaveNoRowAffected,
                                StatusMessage = "Can not save Row affected"
                            });
                        }

                        //SEND MAIL TO Student TO CONFIRM EMAIL
                        var userTokenVal = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        string hashedEmail = GetHashedEmail(user.Email);

                        /*var shortToken = userTokenVal.Substring(0, 7);
                         * user.ShortToken = shortToken;
                         * user.LongToken = userTokenVal;
                         * _ = _globalRepository.SaveAll();*/
                        var fullToken = userTokenVal + "#" + hashedEmail;

                        var emailVerificationLink = _authenticationRepository.GetUserEmailVerificationLink(fullToken);
                        if (emailVerificationLink == null)
                        {
                            return(new ToRespond()
                            {
                                StatusCode = Helpers.ObjectNull,
                                StatusMessage = "Email Verification Link Generation Error"
                            });
                        }
                        else
                        {
                            await dbTransaction.CommitAsync();

                            return(new ToRespond()
                            {
                                StatusCode = Helpers.Success,
                                ObjectValue = _mapper.Map <SiwesCoordinatorResponse>(siwesCoordinator),
                                StatusMessage = "Siwes Coordinator Created Successfully!!!"
                            });
                        }
                    }
                }

                return(new ToRespond()
                {
                    StatusCode = Helpers.NotSucceeded,
                    StatusMessage = "Can not Suceed"
                });
            }

            return(new ToRespond()
            {
                StatusCode = Helpers.SaveError,
                StatusMessage = Helpers.StatusMessageSaveError
            });
        }