Esempio n. 1
0
        public async Task <Result <NoteTaskDto> > SaveNoteTaskAsync(NoteTaskDto entity, bool forceNew = false)
        {
            if (entity.NoteTaskId == Guid.Empty)
            {
                entity.NoteTaskId = Guid.NewGuid();
                return(await _repository.Notes.AddNoteTaskAsync(entity));
            }
            else
            {
                if (!forceNew)
                {
                    return(await _repository.Notes.UpdateNoteTaskAsync(entity));
                }
                else
                {
                    var checkExist = await GetNoteTaskAsync(entity.NoteTaskId);

                    if (checkExist.IsValid)
                    {
                        return(await _repository.Notes.UpdateNoteTaskAsync(entity));
                    }
                    else
                    {
                        return(await _repository.Notes.AddNoteTaskAsync(entity));
                    }
                }
            }
        }
Esempio n. 2
0
    public async Task <bool> DeleteTask(Guid taskId)
    {
        var taskEditor = new TaskEditorComponent(Store);

        taskEditor.AutoDBSave = false;  // don't save automatically

        var res = await taskEditor.DeleteModel(Service, taskId);

        if (res)
        {
            NoteTaskDto tskDel = null;
            foreach (var item in Model.Tasks)
            {
                if (item.NoteTaskId == taskId)
                {
                    tskDel = item;
                    break;
                }
            }

            if (tskDel != null)
            {
                if (tskDel.IsNew())
                {
                    Model.Tasks.Remove(tskDel);
                }
                else
                {
                    tskDel.SetIsDeleted(true);
                }
            }
        }

        return(res);
    }
Esempio n. 3
0
    private async void buttonTaskAdd_Click(object sender, EventArgs e)
    {
        NoteTaskDto task = await _com.NewTask();

        if (task != null)
        {
            listViewTasks.Items.Add(NoteTaskDtoToListViewItem(task));
            listViewTasks.Items[listViewTasks.Items.Count - 1].Selected = true;
            textTaskDescription.Text = task.Description;
            textTaskTags.Text        = task.Tags;
        }
    }
Esempio n. 4
0
    private ListViewItem NoteTaskDtoToListViewItem(NoteTaskDto task)
    {
        var itemList = new ListViewItem(task.UserFullName);

        itemList.Name = task.NoteTaskId.ToString();
        itemList.SubItems.Add(task.Priority.ToString());
        itemList.SubItems.Add(task.Resolved.ToString());
        itemList.SubItems.Add(task.StartDate.ToString());
        itemList.SubItems.Add(task.EndDate.ToString());
        itemList.SubItems.Add(task.EstimatedTime.ToString());
        itemList.SubItems.Add(task.SpentTime.ToString());
        itemList.SubItems.Add(task.DifficultyLevel.ToString());
        itemList.SubItems.Add(task.ExpectedStartDate.ToString());
        itemList.SubItems.Add(task.ExpectedEndDate.ToString());
        return(itemList);
    }
Esempio n. 5
0
    private async Task <bool> SaveFastModelTask()
    {
        var task = new NoteTaskDto
        {
            NoteId      = Model.NoteId,
            UserId      = await PostItGetUserId(),
            Description = Model.Topic,
            Tags        = "Fast task",
            Resolved    = true,
            EndDate     = DateTime.Now
        };

        var resSaveTask = await Service.Notes.SaveNoteTaskAsync(task, true);

        return(await Task.FromResult <bool>(resSaveTask.IsValid));
    }
Esempio n. 6
0
    private void UpdateTask(NoteTaskDto task)
    {
        var item = listViewTasks.Items[task.NoteTaskId.ToString()];

        item.SubItems[1].Text = task.Priority.ToString();
        item.SubItems[2].Text = task.Resolved.ToString();
        item.SubItems[3].Text = task.StartDate.ToString();
        item.SubItems[4].Text = task.EndDate.ToString();
        item.SubItems[5].Text = task.EstimatedTime.ToString();
        item.SubItems[6].Text = task.SpentTime.ToString();
        item.SubItems[7].Text = task.DifficultyLevel.ToString();
        item.SubItems[8].Text = task.ExpectedStartDate.ToString();
        item.SubItems[9].Text = task.ExpectedEndDate.ToString();

        textTaskDescription.Text = task.Description;
        textTaskTags.Text        = task.Tags;
    }
Esempio n. 7
0
    public async Task <Result <NoteTaskDto> > SaveNoteTaskAsync(NoteTaskDto noteTask)
    {
        HttpResponseMessage httpRes;

        if (noteTask.NoteTaskId == Guid.Empty)
        {
            httpRes = await _httpClient.PostAsJsonAsync <NoteTaskDto>($"api/notes/savenotetask", noteTask);
        }
        else
        {
            httpRes = await _httpClient.PutAsJsonAsync <NoteTaskDto>($"api/notes/savenotetask", noteTask);
        }

        var res = await httpRes.Content.ReadFromJsonAsync <Result <NoteTaskDto> >();

        return(res);
    }
Esempio n. 8
0
        public async void AddFastResolvedTask()
        {
            if (SelectedNoteInfo == null)
            {
                View.ShowInfo("There is no note selected to edit.");
                return;
            }
            if (await Store.CheckNoteIsActive(SelectedNoteInfo.NoteId) || await Store.CheckPostItIsActive(SelectedNoteInfo.NoteId))
            {
                View.ShowInfo("This note is already active. Add task with editor form.");
                return;
            }

            var userId = await Store.GetUserId(SelectedServiceRef.Service);

            if (userId == null)
            {
                View.ShowInfo("There is no recognized user to create a quick task.");
                return;
            }

            var service = SelectedServiceRef.Service;

            var task = new NoteTaskDto
            {
                NoteId      = SelectedNoteInfo.NoteId,
                UserId      = (Guid)userId,
                Description = SelectedNoteInfo.Topic,
                Tags        = "Fast task",
                Resolved    = true,
                EndDate     = DateTime.Now
            };

            var resNoteForSaveTask = (await service.Notes.GetExtendedAsync(SelectedNoteInfo.NoteId)).Entity;

            resNoteForSaveTask.Tasks.Add(task);

            var res = (await service.Notes.SaveExtendedAsync(resNoteForSaveTask)).Entity;

            OnNoteEditorSaved(res.GetSimpleDto <NoteInfoDto>());
        }
Esempio n. 9
0
        public async Task <IActionResult> SaveNoteTask([FromBody] NoteTaskDto entity)
        {
            try
            {
                var resApi = await _service.Notes.SaveNoteTaskAsync(entity);

                if (resApi.IsValid)
                {
                    return(Ok(resApi));
                }
                else
                {
                    return(BadRequest(resApi));
                }
            }
            catch (Exception ex)
            {
                var kresApi = new Result <NoteTaskDto>();
                kresApi.AddErrorMessage("Generic error: " + ex.Message);
                return(BadRequest(kresApi));
            }
        }
Esempio n. 10
0
    private async Task <bool> SaveFolderDto(IKntService service, Guid?userId, CarpetaExport carpetaExport, Guid?parent, List <EtiquetaExport> etiquetas)
    {
        string r11 = "\r\n";
        string r12 = "\n";

        string r21 = "&#x";
        string r22 = "$$$";

        int nErrors = 0;

        #region Import customization

        //// afumfer
        //// .......
        //string r31 = @"D:\KaNote\Resources\ImgsEditorHtml";
        //string r32 = @"D:\Anotas\Docs\__Imgs_!!ANTHtmlEditor!!_";

        //string r41 = @"D:\KaNote\Resources\ImgsEditorHtml";
        //string r42 = @"C:\Anotas\Docs\__Imgs_!!ANTHtmlEditor!!_";

        //string r51 = @"_KNTERRORTRAP";
        //string r52 = @"_ANTERRORTRAP";
        //string r61 = @"_KNTERRORCODE";
        //string r62 = @"_ANTERRORCODE";
        //string r71 = @"_KNTERRORDESCRIPTION";
        //string r72 = @"_ANTERRORDESCRIPTION";
        //string r81 = "";
        //string r82 = "[!ExecuteAnTScriptBGroundThread]";
        //string r91 = "";
        //string r92 = "_ANTForm.Exit();";

        #endregion

        string r31 = @"KntResCon/";
        string r32 = @"\\educacion.org\Almacen\Pincel\TareasTM\Doc\";

        string r41 = @"KntResCon/";
        string r42 = @"\\educacion.org\Almacen\Pincel\tareasTM\Doc\";

        string r51 = @"KntResCon/";
        string r52 = @"\\Educacion.org\Almacen\Pincel\TareasTM\Doc\";

        var newFolderDto = new FolderDto
        {
            FolderNumber = carpetaExport.IdCarpeta,
            //FolderNumber = 0,
            Name       = carpetaExport.NombreCarpeta,
            Order      = carpetaExport.Orden,
            OrderNotes = carpetaExport.OrdenNotas,
            ParentId   = parent
        };

        var resNewFolder = await service.Folders.SaveAsync(newFolderDto);

        label1.Text = $"Added folder: {resNewFolder.Entity?.Name}";
        label1.Refresh();

        var folder = resNewFolder.Entity;

        foreach (var n in carpetaExport.Notas)
        {
            try
            {
                if (n.DescripcionNota.Contains(r12))
                {
                    // Hack multiples CR LF
                    n.DescripcionNota = n.DescripcionNota.Replace(r12, r11);
                    // Hack for problems in deserialization
                    n.DescripcionNota = n.DescripcionNota.Replace(r22, r21);
                }

                #region Import customization

                //// afumfer
                //// .......
                //// Hack inserted resources change
                n.DescripcionNota = n.DescripcionNota.Replace(r32, r31);
                n.DescripcionNota = n.DescripcionNota.Replace(r42, r41);
                n.DescripcionNota = n.DescripcionNota.Replace(r52, r51);
                //n.DescripcionNota = n.DescripcionNota.Replace(r62, r61);
                //n.DescripcionNota = n.DescripcionNota.Replace(r72, r71);
                //n.DescripcionNota = n.DescripcionNota.Replace(r82, r81);
                //n.DescripcionNota = n.DescripcionNota.Replace(r92, r91);

                #endregion

                (string descriptionNew, string scriptCode) = ExtractAnTScriptCode(n.DescripcionNota);

                DateTime fecMod;
                if (n.FechaModificacion > n.FechaHoraCreacion)
                {
                    fecMod = n.FechaModificacion;
                }
                else
                {
                    fecMod = n.FechaHoraCreacion;
                }

                var newNote = new NoteExtendedDto
                {
                    FolderId   = folder.FolderId,
                    NoteNumber = n.IdNota,
                    //NoteNumber = 0,

                    Description = descriptionNew,
                    Script      = scriptCode,

                    Topic                = n.Asunto,
                    CreationDateTime     = n.FechaHoraCreacion,
                    ModificationDateTime = fecMod,
                    Tags         = n.PalabrasClave,
                    InternalTags = n.Vinculo,
                    Priority     = n.Prioridad
                };

                if (!newNote.Tags.Contains("UC="))
                {
                    if ("afumfer fdomher jurivmar sesther sleoare dgoddelw".Contains(n.Usuario))
                    {
                        if (!string.IsNullOrEmpty(newNote.Tags))
                        {
                            newNote.Tags += "; ";
                        }
                        newNote.Tags += "UC=" + n.Usuario;
                    }
                }

                // Add task
                if (n.FechaInicio > new DateTime(1901, 1, 1) ||
                    n.FechaResolucion > new DateTime(1901, 1, 1) ||
                    n.FechaPrevistaInicio > new DateTime(1901, 1, 1) ||
                    n.FechaPrevistaFin > new DateTime(1901, 1, 1) ||
                    n.Resuelto == true)
                {
                    NoteTaskDto task = new NoteTaskDto
                    {
                        NoteId               = Guid.Empty,
                        UserId               = (Guid)userId,
                        CreationDateTime     = n.FechaHoraCreacion,
                        ModificationDateTime = fecMod,
                        Description          = newNote.Topic,
                        Tags              = "(ANotas import)",
                        Priority          = 1,
                        Resolved          = n.Resuelto,
                        EstimatedTime     = n.TiempoEstimado,
                        SpentTime         = n.TiempoInvertido,
                        DifficultyLevel   = n.NivelDificultad,
                        ExpectedEndDate   = n.FechaPrevistaFin,
                        ExpectedStartDate = n.FechaPrevistaInicio,
                        EndDate           = n.FechaResolucion,
                        StartDate         = n.FechaInicio
                    };
                    newNote.Tasks.Add(task);
                }

                // Add alarm
                if (n.Alarma > new DateTime(1901, 1, 1))
                {
                    var message = new KMessageDto
                    {
                        NoteId         = Guid.Empty,
                        UserId         = userId,
                        AlarmActivated = n.ActivarAlarma,
                        ActionType     = EnumActionType.UserAlarm,
                        Comment        = "(import ANotas)",
                        AlarmDateTime  = n.Alarma
                    };

                    // Alarm type
                    switch (n.TipoAlarma)
                    {
                    case 0:      // estandar
                        message.AlarmType = EnumAlarmType.Standard;
                        break;

                    case 1:      // diaria
                        message.AlarmType = EnumAlarmType.Daily;
                        break;

                    case 2:      // semanal
                        message.AlarmType = EnumAlarmType.Weekly;
                        break;

                    case 3:      // mensual
                        message.AlarmType = EnumAlarmType.Monthly;
                        break;

                    case 4:      // anual
                        message.AlarmType = EnumAlarmType.Annual;
                        break;

                    case 5:      // cada hora
                        message.AlarmType    = EnumAlarmType.InMinutes;
                        message.AlarmMinutes = 60;
                        break;

                    case 6:      // 4 horas
                        message.AlarmType    = EnumAlarmType.InMinutes;
                        message.AlarmMinutes = 60 * 4;
                        break;

                    case 7:      // 8 horas
                        message.AlarmType    = EnumAlarmType.InMinutes;
                        message.AlarmMinutes = 60 * 8;
                        break;

                    case 8:      // 12 diaria
                        message.AlarmType    = EnumAlarmType.InMinutes;
                        message.AlarmMinutes = 60 * 12;
                        break;

                    default:
                        message.AlarmType = EnumAlarmType.Standard;
                        break;
                    }

                    newNote.Messages.Add(message);
                }

                // Add resource
                if (!string.IsNullOrEmpty(n.NotaEx))
                {
                    #region Import resources for ContendInDB = true

                    //// TODO: Refactor this line
                    //var root = @"D:\ANotas\Docs";

                    //var fileFullName = $"{root}{n.NotaEx}";

                    //if (File.Exists(fileFullName))
                    //{
                    //    var fileArrayBytes = File.ReadAllBytes(fileFullName);
                    //    var contentBase64 = Convert.ToBase64String(fileArrayBytes);
                    //    ResourceDto resource = new ResourceDto
                    //    {
                    //        NoteId = Guid.Empty,
                    //        ContentInDB = true,
                    //        Order = 1,
                    //        Container = service.RepositoryRef.ResourcesContainer + "\\" + DateTime.Now.Year.ToString(),
                    //        Name = $"{Guid.NewGuid()}_{Path.GetFileName(fileFullName)}",
                    //        Description = $"(ANotas import {n.NotaEx})",
                    //        ContentArrayBytes = fileArrayBytes,
                    //        ContentBase64 = contentBase64,
                    //        FileType = _store.ExtensionFileToFileType(Path.GetExtension(fileFullName))
                    //    };
                    //    newNote.Resources.Add(resource);
                    //}

                    #endregion

                    #region Import resources for ContendInDB = false

                    if (n.NotaEx[0] == '\\')
                    {
                        n.NotaEx = n.NotaEx.Substring(1);
                    }

                    string fileImport = Path.Combine(new[] { service.RepositoryRef.ResourcesContainerCacheRootPath, service.RepositoryRef.ResourcesContainer, n.NotaEx });

                    ResourceDto resource = new ResourceDto
                    {
                        NoteId            = Guid.Empty,
                        ContentInDB       = false,
                        Order             = 1,
                        Container         = service.RepositoryRef.ResourcesContainer,
                        Name              = n.NotaEx,
                        Description       = $"(ANotas import {n.NotaEx})",
                        ContentArrayBytes = null,
                        ContentBase64     = null,
                        FileType          = _store.ExtensionFileToFileType(Path.GetExtension(fileImport))
                    };
                    newNote.Resources.Add(resource);

                    #endregion
                }

                // Save note and PostIt
                Result <NoteExtendedDto> resNewNote = null;
                if (newNote.IsValid())
                {
                    resNewNote = await service.Notes.SaveExtendedAsync(newNote);

                    label2.Text = $"Added note: {resNewNote.Entity?.Topic} - {resNewNote.Entity?.NoteId.ToString()}";

                    // Add Window
                    WindowDto windowPostIt = new WindowDto
                    {
                        NoteId         = resNewNote.Entity.NoteId,
                        UserId         = (Guid)userId,
                        Visible        = false, //n.Visible,
                        AlwaysOnTop    = n.SiempreArriba,
                        PosX           = n.PosX,
                        PosY           = n.PosY,
                        Width          = n.Ancho,
                        Height         = n.Alto,
                        FontName       = n.FontName,
                        FontSize       = n.FontSize,
                        FontBold       = n.FontBold,
                        FontItalic     = n.FontItalic,
                        FontUnderline  = n.FontUnderline,
                        FontStrikethru = n.FontStrikethru,
                        ForeColor      = ColorTranslator.ToHtml(ColorTranslator.FromOle(n.ForeColor)),
                        TitleColor     = ColorTranslator.ToHtml(ColorTranslator.FromOle(n.ColorBanda)),
                        TextTitleColor = ColorTranslator.ToHtml(ColorTranslator.FromOle(n.ForeColor)),
                        NoteColor      = ColorTranslator.ToHtml(ColorTranslator.FromOle(n.ColorNota)),
                        TextNoteColor  = ColorTranslator.ToHtml(ColorTranslator.FromOle(n.ForeColor))
                    };
                    var resNewPostIt = await service.Notes.SaveWindowAsync(windowPostIt);
                }
                else
                {
                    label2.Text = $"Added note: ERROR invalid note.";
                    var msgErr = newNote.GetErrorMessage();
                    MessageBox.Show($"ERROR invalid note: {msgErr}");
                }

                label2.Refresh();
            }
            catch (Exception ex)
            {
                // TODO: hack, hay un registro erróneo en la exportación.
                nErrors++;
                if (nErrors > 1)
                {
                    MessageBox.Show($"Más de error. Error: {ex.Message}");
                }
                //throw;
            }
        }

        // For each folder child all recursively  to this method
        foreach (var c in carpetaExport.CarpetasHijas)
        {
            await SaveFolderDto(service, userId, c, folder.FolderId, etiquetas);
        }

        return(await Task.FromResult <bool>(true));
    }