public async Task <CertificateViewModel <SaveCertificateResource> > CreateCertificate(CreateCertificateResource certificateObj) { model.AppResult.Result = false; // Validate CollegeName, Major if (string.IsNullOrEmpty(certificateObj.Name) || string.IsNullOrEmpty(certificateObj.Provider) || certificateObj.Name.Length > 255 || certificateObj.Provider.Length > 255) { model.AppResult.Message = "CollegeName/Major invalid"; return(model); } // Validate Start/End Date if (!Functions.ValidateInputTime(certificateObj.StartDate, certificateObj.EndDate)) { model.AppResult.Message = Constant.DATETIME_ERROR; return(model); } // Validate PersonId var taskValidPeronId = await _certificateRepository.ValidatePersonIdAsync(certificateObj.PersonId); if (taskValidPeronId < 1) { model.AppResult.Message = Constant.PERSONID_ERROR; return(model); } // Define DateTime.Year = "1111" is null var valueStartDate = Functions.ConvertDateTime(certificateObj.StartDate); var valueEndDate = Functions.ConvertDateTime(certificateObj.EndDate); // Find maximum value of OrderIndex int maximumOrderIndex = await _certificateRepository.MaximumOrderIndexAsync(certificateObj.PersonId); maximumOrderIndex = (maximumOrderIndex <= 0) ? 1 : maximumOrderIndex + 1; // Insert infomation into temporary model var tempCertificateInfo = new CertificateInfo() { Name = Regex.Replace(certificateObj.Name.Trim(), @"\s{2,}", " "), Provider = Regex.Replace(certificateObj.Provider.Trim(), @"\s{2,}", " "), StartDate = valueStartDate, EndDate = (valueEndDate.Year == 1111) ? (DateTime?)null : valueEndDate, // Define DateTime.Year = "1111" is null PersonId = certificateObj.PersonId, UpdatedBy = null, UpdatedAt = null, CreatedBy = Helpers.HttpContext.CurrentUser, CreatedAt = DateTime.Now, Status = true, OrderIndex = maximumOrderIndex }; var tempCertificateInfoId = await _certificateRepository.InsertAsync(tempCertificateInfo); // Set response to FE model.ObjModel.Id = tempCertificateInfoId; model.ObjModel.OrderIndex = tempCertificateInfo.OrderIndex; model.ObjModel.Name = tempCertificateInfo.Name; model.ObjModel.Provider = tempCertificateInfo.Provider; model.ObjModel.StartDate = tempCertificateInfo.StartDate.Year.ToString(); model.ObjModel.EndDate = (tempCertificateInfo.EndDate is null) ? string.Empty : string.Format(tempCertificateInfo.EndDate?.Year.ToString()); model.AppResult.Result = true; model.AppResult.Message = Constant.INSERT_SUCCESS; model.AppResult.DataResult = model.ObjModel; return(model); }