Esempio n. 1
0
        public async Task <ActionResult> Create(GarantiaViewModel model, IEnumerable <HttpPostedFileBase> Files)
        {
            //var f = await UploadFiles(0, Files);

            if (ModelState.IsValid)
            {
                //Save Return
                model.Garantia.Estado        = EstadoFormatoPQRS.Open;
                model.Garantia.FechaCreacion = DateTime.Now;
                db.Garantias.Add(model.Garantia);
                await db.SaveChangesAsync();


                //Genera HASHNroTracking
                string HASHNroTracking = Fn.HASH("G" + model.Garantia.Id);
                HASHNroTracking            = "G" + model.Garantia.Id + HASHNroTracking;
                model.Garantia.NroTracking = HASHNroTracking.Substring(0, 10).ToUpper();

                db.Entry(model.Garantia).State = EntityState.Modified;
                await db.SaveChangesAsync();

                //Save Items
                if (model.Items != null)
                {
                    int i = 1;
                    foreach (var item in model.Items)
                    {
                        item.GarantiaId = model.Garantia.Id;
                        item.Id         = i++;

                        db.GarantiaItems.Add(item);
                    }

                    await db.SaveChangesAsync();
                }

                //Save Files
                if (Files != null)
                {
                    await UploadFiles(model.Garantia.Id, Files, 1);
                }

                AddLog("", model.Garantia.Id, model);
                return(RedirectToAction("Index", GetReturnSearch()));
            }

            Seguridadcll seguridadcll = (Seguridadcll)Session["seguridad"];

            ViewBag.UsuarioNombre = seguridadcll.Usuario.UsuarioId + " - " + seguridadcll.Usuario.UsuarioNombre;
            ViewBag.UsuarioId     = seguridadcll.Usuario.UsuarioId;
            ViewBag.MotivoPQRS    = await db.MotivosPQRS.Where(m => m.TipoPQRS == TipoPQRS.Garantia && m.Activo == true).ToListAsync();

            return(View(model));
        }
Esempio n. 2
0
        public async Task <ActionResult> Edit(GarantiaViewModel model, IEnumerable <HttpPostedFileBase> Files)
        {
            if (ModelState.IsValid)
            {
                //Guardar Cabecera
                db.Entry(model.Garantia).State = EntityState.Modified;
                await db.SaveChangesAsync();

                //si es null ponerle el valor en 1


                //int idx = await db.Database.SqlQuery<int>($"SELECT ISNULL(MAX(Id),0) FROM DevolucionItem WHERE DevolucionId = {model.Devolucion.Id} ").FirstOrDefaultAsync();

                //Elimina los items Delete
                if (await DeleteItems(model.Garantia.Id, model.ItemsDelete, true))
                {
                    int idx          = 0;
                    var currentItems = await db.GarantiaItems.Where(i => i.GarantiaId == model.Garantia.Id).ToListAsync();

                    if (currentItems.Count > 0)
                    {
                        idx = currentItems.Select(i => i.Id).Max();
                    }
                    //Actualiza  los items actuales
                    foreach (var item in currentItems)
                    {
                        var modelItem = model.Items.Where(i => i.Id == item.Id).FirstOrDefault();
                        if (modelItem != null)
                        {
                            item.ItemId                    = modelItem.ItemId;
                            item.Cantidad                  = modelItem.Cantidad;
                            item.Precio                    = modelItem.Precio;
                            item.NroFactura                = modelItem.NroFactura;
                            item.NroGuia                   = modelItem.NroGuia;
                            item.MotivoPQRSId              = modelItem.MotivoPQRSId;
                            item.CausaPQRSId               = ((modelItem.CausaPQRSId ?? 0) != 0) ? modelItem.CausaPQRSId : null;
                            item.Estado                    = modelItem.Estado;
                            item.ComentarioAdicional       = modelItem.ComentarioAdicional;
                            item.CantidadRecibida          = modelItem.CantidadRecibida;
                            item.CantidadSubida            = modelItem.CantidadSubida;
                            item.ComentarioEstadoMercancia = modelItem.ComentarioEstadoMercancia;
                            item.DocSoporte                = modelItem.DocSoporte;
                            item.PrecioAsumido             = modelItem.PrecioAsumido;
                            db.Entry(item).State           = EntityState.Modified;
                        }
                    }

                    //Agregar los nuevos items
                    if (model.Items != null)
                    {
                        foreach (var item in model.Items.Where(i => i.Id == 0))
                        {
                            if (item.Id == 0)
                            {
                                item.GarantiaId = model.Garantia.Id;
                                item.Id         = ++idx;
                                db.GarantiaItems.Add(item);
                            }
                        }
                    }


                    await db.SaveChangesAsync();


                    //Archivos
                    var currentFiles = await db.GarantiaArchivos
                                       .Where(da => da.GarantiaId == model.Garantia.Id)
                                       .ToListAsync();


                    if (model.GarantiaArchivos != null)
                    {
                        var FilesId = model.GarantiaArchivos.Select(a => a.Order).ToArray();


                        var itemsToDelete = currentFiles.Where(a => !FilesId.Contains(a.Order)).ToList();

                        if (itemsToDelete.Count > 0)
                        {
                            db.GarantiaArchivos.RemoveRange(itemsToDelete);
                            await db.SaveChangesAsync();
                        }
                    }
                    else
                    {
                        var itemsToDelete = currentFiles.ToList();

                        if (itemsToDelete.Count > 0)
                        {
                            db.GarantiaArchivos.RemoveRange(itemsToDelete);
                            await db.SaveChangesAsync();
                        }
                    }


                    //Save Files
                    int order = 1;
                    if (currentFiles.Count > 0)
                    {
                        order = currentFiles.Select(i => i.Order).Max() + 1;
                    }

                    if (Files != null)
                    {
                        await UploadFiles(model.Garantia.Id, Files, order);
                    }


                    AddLog("", model.Garantia.Id, model);
                    return(RedirectToAction("Index", GetReturnSearch()));
                }
                else
                {
                    ModelState.AddModelError("", "Error Deleting Detail (GarantiaItems)");
                }
            }

            return(await GetView(model.Garantia.Id));
        }