Пример #1
0
        //[Authorize]
        public async Task <IActionResult> CreateVehicle([FromBody] SaveVehicleVM vehicleModelVM)
        {
            //throw new Exception();
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var vehicleModel = mapper.Map <SaveVehicleVM, VehicleModel>(vehicleModelVM);

            vehicleModel.LastUpdate = DateTime.Now;

            vehicleRepository.AddVehicle(vehicleModel);

            await unitofWork.CompleteAsync();

            vehicleModel = await vehicleRepository.GetVehicle(vehicleModel.Id);

            var result = mapper.Map <VehicleModel, VehicleModelVM>(vehicleModel);

            return(Ok(result));
        }
Пример #2
0
        public async Task <IActionResult> CreateIncidenceType([FromBody] IncidenceTypeDto incidenceTypeResource)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var user = await _userRepo.GetUser(_userRepo.GetLoggedInUserId());

                //if organizationId passed in is null, then it was passed by the organization's Admin. Hence use the organization admin's organizationId in this case
                if (incidenceTypeResource.OrganizationId == null && user.OrganizationId != null)
                {
                    incidenceTypeResource.OrganizationId = user.OrganizationId;
                }
                if (_itRepo.CheckIncidenceType(incidenceTypeResource.Name, incidenceTypeResource.OrganizationId))
                {
                    ModelState.AddModelError("Error", "The Incidence Type with this name already exists.");
                    return(BadRequest(ModelState));
                }

                var incidenceType = _mapper.Map <IncidenceTypeDto, IncidenceType>(incidenceTypeResource);
                incidenceType.Deleted   = false;
                incidenceType.Protected = false;
                _itRepo.Add(incidenceType);
                await _unitOfWork.CompleteAsync();

                incidenceType = await _itRepo.GetIncidenceType(incidenceType.Id);

                var result = _mapper.Map <IncidenceType, IncidenceTypeDto>(incidenceType);
                return(Ok(result));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Error", "An error occured while performing this operation.");
                return(BadRequest(ModelState));
            }
        }
Пример #3
0
        public async Task <IActionResult> CreateIncidenceTypeDepartment([FromBody] IncidenceTypeDepartmentDto incidenceTypeDeptResource)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var user = await _userRepo.GetUser(_userRepo.GetLoggedInUserId());

                //if organizationId passed in is null, then it was passed by the organization's Admin. Hence use the organization admin's organizationId in this case
                if (incidenceTypeDeptResource.OrganizationId == null && user.OrganizationId != null)
                {
                    incidenceTypeDeptResource.OrganizationId = user.OrganizationId;
                }

                if (_itdRepo.CheckIncidenceTypeDepartment(incidenceTypeDeptResource.IncidenceTypeId, incidenceTypeDeptResource.OrganizationId))
                {
                    ModelState.AddModelError("Error", "This Incident Type is already mapped to a department.");
                    return(BadRequest(ModelState));
                }

                var incidenceTypeDept = _mapper.Map <IncidenceTypeDepartmentDto, IncidenceTypeDepartmentMapping>(incidenceTypeDeptResource);
                _itdRepo.Add(incidenceTypeDept);
                await _unitOfWork.CompleteAsync();

                incidenceTypeDept = await _itdRepo.GetIncidenceTypeDepartment(incidenceTypeDept.Id);

                var result = _mapper.Map <IncidenceTypeDepartmentMapping, IncidenceTypeDepartmentDto>(incidenceTypeDept);
                return(Ok(result));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Error", "An error occured while performing this operation.");
                return(BadRequest(ModelState));
            }
        }
Пример #4
0
        public async Task <IActionResult> CreateUser([FromBody] SaveUserDto saveUserDto)
        {
            try
            {
                var userToStringField = "";
                var OrgAdminUser      = await _userRepo.GetUser(_userRepo.GetLoggedInUserId());

                var toStringField = saveUserDto.FirstName + " " + saveUserDto.LastName + " | " + saveUserDto.JobTitle;
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                if (_userRepo.CheckUser(saveUserDto.Username))
                {
                    ModelState.AddModelError("Error", "A user with this username already exists.");
                    return(BadRequest(ModelState));
                }

                userToStringField = toStringField;
                if (saveUserDto.OrganizationId != null)
                {
                    var orgdata = await _orgRepo.GetOrganization(saveUserDto.OrganizationId);

                    userToStringField         = toStringField + " | " + orgdata.CompanyName;
                    saveUserDto.toStringField = userToStringField;
                }
                else
                {
                    var orgdata = await _orgRepo.GetOrganization(OrgAdminUser.OrganizationId);

                    userToStringField          = toStringField + " | " + orgdata.CompanyName;
                    saveUserDto.toStringField  = userToStringField;
                    saveUserDto.OrganizationId = OrgAdminUser.OrganizationId;
                }

                var user = _mapper.Map <SaveUserDto, User>(saveUserDto);
                user.DateCreated           = DateTime.Now;
                user.CreatedByUserId       = _userRepo.GetLoggedInUserId();
                user.Protected             = false;
                user.Deleted               = false;
                user.toStringField         = userToStringField;
                user.IsActive              = true;
                user.MobileAppLoginPattern = ""; //otherwise it will take null value and api will not return null values after login due to custom rules on UserDetailsDto.cs

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

                if (result.Succeeded)
                {
                    var savedUser = _userManager.FindByNameAsync(saveUserDto.Username).Result;

                    var userDeployInfo = _mapper.Map <SaveUserDto, UserDeployment>(saveUserDto);
                    userDeployInfo.UserId          = savedUser.Id;
                    userDeployInfo.DateCreated     = DateTime.Now;
                    userDeployInfo.Deleted         = false;
                    userDeployInfo.Protected       = false;
                    userDeployInfo.CreatedByUserId = _userRepo.GetLoggedInUserId();

                    _userDeploymentRepo.Add(userDeployInfo);
                }

                user = _userManager.FindByNameAsync(saveUserDto.Username).Result;
                var userData = _mapper.Map <User, UserDetailsDto>(user);


                await _unitOfWork.CompleteAsync();

                return(Ok(userData));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Error", "An error occured while performing this operation.");
                return(BadRequest(ModelState));
            }
        }
Пример #5
0
        public async Task <IActionResult> PutHazard([FromRoute] Guid id, [FromBody] SaveHazardResource hazardResource)
        {
            try
            {
                bool triggerNotification = false;
                //input validation
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var hazard = await repository.GetHazard(id);

                if (hazard == null)
                {
                    return(NotFound());
                }

                hazardResource.EditedByUserId  = _userRepo.GetLoggedInUserId();
                hazardResource.DateCreated     = hazard.DateCreated;
                hazardResource.CreatedByUserId = hazard.CreatedByUserId;

                hazardResource.Description                  = hazard.Description;
                hazardResource.ReportedLatitude             = hazard.ReportedLatitude ?? 0;
                hazardResource.ReportedLongitude            = hazard.ReportedLongitude ?? 0;
                hazardResource.ReporterName                 = hazard.ReporterName;
                hazardResource.ReporterEmail                = hazard.ReporterEmail;
                hazardResource.ReporterFirstResponderAction = hazard.ReporterFirstResponderAction;
                hazardResource.ReporterFeedbackRating       = hazard.ReporterFeedbackRating;
                //hazardResource.ManagerFeedbackRating = hazard.ManagerFeedbackRating;
                hazardResource.Protected = hazard.Protected;
                hazardResource.Deleted   = hazard.Deleted;

                hazardResource.Code       = hazard.Code;
                hazardResource.DateEdited = DateTime.UtcNow;
                hazardResource.Deleted    = hazard.Deleted;
                //incidenceResource.Protected = incidence.Protected;
                //hazardResource.AssignerId = hazard.AssignerId;
                hazardResource.AssignedOrganizationId = hazard.AssignedOrganizationId;
                //hazardResource.AssignedDepartmentId = hazard.AssignedDepartmentId;
                //hazardResource.ResolutionDate = hazard.ResolutionDate;

                // trigger alert when incidence status is open or re-opened
                if (hazardResource.IncidenceStatusId != hazard.IncidenceStatusId && (hazardResource.IncidenceStatusId == GlobalFields.OpenIncidenceStatus || hazardResource.IncidenceStatusId == GlobalFields.ReOpenedIncidenceStatus))
                {
                    hazardResource.AssignerId = _userRepo.GetLoggedInUserId();
                    triggerNotification       = true;
                }
                else if (hazardResource.IncidenceStatusId != hazard.IncidenceStatusId && hazardResource.IncidenceStatusId == GlobalFields.ClosedIncidenceStatus)
                {
                    // set resolution date when incidence is closed
                    hazardResource.ResolutionDate = DateTime.Now;
                    triggerNotification           = true;
                }
                else if (hazardResource.IncidenceStatusId != hazard.IncidenceStatusId && (hazardResource.IncidenceStatusId == GlobalFields.ResolvedIncidenceStatus || hazardResource.IncidenceStatusId == GlobalFields.UnderReviewIncidenceStatus))
                {
                    triggerNotification = true;
                }

                mapper.Map <SaveHazardResource, Hazard>(hazardResource, hazard);

                await unitOfWork.CompleteAsync();

                //send email and sms to notify assignee upon incidence opening and assignment
                //IncidenceType's mapped department's settings is used for sending notification, otherwise if empty, use organization or system settings
                if (triggerNotification)
                {
                    await _notificationRepo.SendIncidenceNotification(hazardResource, hazardResource.AssignedDepartmentId, hazardResource.AssignerId, hazardResource.AssigneeId, hazardResource.AssignedOrganizationId);
                }

                hazard = await repository.GetHazard(id);

                var result = mapper.Map <Hazard, HazardResource>(hazard);
                return(Ok(result));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Error", "An error occured while performing this operation.");
                return(BadRequest(ModelState));
            }
        }
Пример #6
0
        public async Task <IActionResult> UploadProfilePhoto(Guid userId, IFormFile file)
        {
            try
            {
                // upload user profile photo
                var user = await _userRepo.GetUser(userId);

                if (user == null)
                {
                    return(NotFound());
                }

                if (file == null)
                {
                    return(BadRequest("Null file"));
                }
                if (file.Length == 0)
                {
                    return(BadRequest("Empty file"));
                }

                var loggedinUser = await _userRepo.GetUser(_userRepo.GetLoggedInUserId());

                var userdeployment = await _userRepo.GetUserDeploymentData(_userRepo.GetLoggedInUserId());

                var orgSettings = await _settingsRepo.GetOrganizationSettings(loggedinUser.OrganizationId);

                var deptSettings = await _settingsRepo.GetDepartmentSettings(userdeployment.DepartmentId);

                var generalSettings = await _settingsRepo.GetGeneralSettings();


                //uploading incidence resolution proof uses the uploader's dept settings|org settings|general settings
                var isFilePhotoNotVideo = _settingsRepo.IsImageFileNotVideo(deptSettings, orgSettings, generalSettings, file);
                if (!isFilePhotoNotVideo)
                {
                    return(BadRequest("Invalid file type"));
                }

                if (!_settingsRepo.ValidateFileSize(deptSettings, orgSettings, generalSettings, file))
                {
                    return(BadRequest("Maximun file size exceeded"));
                }

                //check if user already has a profile photo and delete, replace with new one
                var userProfilePhotoData = await _photoRepo.GetUserProfilePhoto(userId);

                if (userProfilePhotoData != null)
                {
                    _photoRepo.Delete(userProfilePhotoData);
                    await _unitOfWork.CompleteAsync();
                }

                var uploadsFolderPath = Path.Combine(_host.WebRootPath, "uploads/userProfileData");
                var photo             = await _photoService.UploadUserProfilePhoto(user, file, uploadsFolderPath, isFilePhotoNotVideo);

                return(Ok(_mapper.Map <Media, MediaResource>(photo)));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Error", "An error occured while performing this operation.");
                return(BadRequest(ModelState));
            }
        }